Spring Bootプロジェクトへのデータクラスの追加
これは Spring BootとKotlinを使い始める チュートリアルの第2部です。先に進む前に、前のステップを完了していることを確認してください。
KotlinでSpring Bootプロジェクトを作成する
Spring Bootプロジェクトにデータクラスを追加する
Spring Bootプロジェクトにデータベースのサポートを追加する
データベースアクセスにSpring Data CrudRepositoryを使用する
このチュートリアルでは、アプリケーションに機能を追加し、データクラスなどのKotlin言語のさらなる機能について学びます。 これには、シリアル化されたオブジェクトのコレクションを含むJSONドキュメントを応答するように MessageController クラスを変更する必要があります。
アプリケーションの更新
同じパッケージ内の
DemoApplication.ktファイルの隣に、Message.ktファイルを作成します。Message.ktファイルに、idとtextの2つのプロパティを持つデータクラスを作成します。kotlin// Message.kt package com.example.demo data class Message(val id: String?, val text: String)Messageクラスはデータ転送に使用されます。シリアル化されたMessageオブジェクトのリストは、コントローラーがブラウザのリクエストに対して応答するJSONドキュメントを構成します。データクラス – data class Message
Kotlinにおけるデータクラス (data class) の主な目的は、データを保持することです。このようなクラスには
dataキーワードが付与され、標準的な機能やいくつかのユーティリティ関数がクラスの構造から自動的に導き出されます。この例では、データを保存することが主な目的であるため、
Messageをデータクラスとして宣言しました。valプロパティとvarプロパティ
Kotlinのプロパティは、以下のいずれかとして宣言できます:
- ミュータブル (変更可能):
varキーワードを使用 - 読み取り専用:
valキーワードを使用
Messageクラスは、valキーワードを使用してidとtextの2つのプロパティを宣言しています。 コンパイラは、これら両方のプロパティに対して自動的にゲッター (getter) を生成します。Messageクラスのインスタンスが作成された後、これらのプロパティの値を再代入することはできません。Null許容型 – String?
KotlinはNull許容型 (nullable types) をビルトインでサポートしています。Kotlinの型システムは、
nullを保持できる参照 (Null許容参照) と、保持できない参照 (Null非許容参照) を区別します。
例えば、String型の通常の変数はnullを保持できません。nullを許可するには、String?と書くことで、その変数をNull許容文字列として宣言できます。今回の
MessageクラスのidプロパティはNull許容型として宣言されています。 したがって、idの値としてnullを渡してMessageクラスのインスタンスを作成することが可能です。kotlin- ミュータブル (変更可能):
MessageController.ktファイルで、index()関数の代わりに、Messageオブジェクトのリストを返すlistMessages()関数を作成します。kotlin// MessageController.kt package com.example.demo import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController @RequestMapping("/") class MessageController { @GetMapping fun listMessages() = listOf( Message("1", "Hello!"), Message("2", "Bonjour!"), Message("3", "Privet!"), ) }コレクション – listOf()
Kotlin標準ライブラリは、セット、リスト、マップなどの基本的なコレクション型の実装を提供しています。
各コレクション型には、読み取り専用またはミュータブルのものがあります:- 読み取り専用コレクションには、コレクションの要素にアクセスするための操作が含まれます。
- ミュータブルコレクションには、要素の追加、削除、更新を行うための書き込み操作も含まれます。
これらのコレクションのインスタンスを作成するために、対応するファクトリ関数もKotlin標準ライブラリによって提供されています。
このチュートリアルでは、
listOf()関数を使用してMessageオブジェクトのリストを作成します。 これはオブジェクトの読み取り専用リストを作成するファクトリ関数です。リストから要素を追加したり削除したりすることはできません。
リストに対して書き込み操作を行う必要がある場合は、mutableListOf()関数を呼び出してミュータブルなリストのインスタンスを作成します。末尾のコンマ (Trailing comma)
末尾のコンマは、一連の要素の最後の項目の後にあるコンマ記号です:
kotlinこれはKotlin構文の便利な機能であり、完全にオプションです。これらがなくてもコードは動作します。
上記の例では、
Messageオブジェクトのリストを作成する際、最後のlistOf()関数の引数の後に末尾のコンマを含めています。
MessageController からの応答は、 Message オブジェクトのコレクションを含むJSONドキュメントになります。
Jacksonライブラリがクラスパスにある場合、SpringアプリケーションのコントローラーはデフォルトでJSONレスポンスをレンダリングします。
build.gradle.ktsファイルでspring-boot-starter-webmvc依存関係を指定したため、推移的 (transitive) 依存関係としてJacksonが含まれています。 そのため、エンドポイントがJSONにシリアル化可能なデータ構造を返す場合、アプリケーションはJSONドキュメントを応答します。
以下は、 DemoApplication.kt 、 MessageController.kt 、および Message.kt ファイルの完全なコードです。
// DemoApplication.kt
package com.example.demo
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@SpringBootApplication
class DemoApplication
fun main(args: Array<String>) {
runApplication<DemoApplication>(*args)
}// MessageController.kt
package com.example.demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
@RestController
@RequestMapping("/")
class MessageController {
@GetMapping
fun listMessages() = listOf(
Message("1", "Hello!"),
Message("2", "Bonjour!"),
Message("3", "Privet!"),
)
}// Message.kt
package com.example.demo
data class Message(val id: String?, val text: String)アプリケーションの実行
Springアプリケーションを実行する準備が整いました。
アプリケーションを再度実行します。
アプリケーションが起動したら、次のURLを開きます:
texthttp://localhost:8080JSON形式のメッセージのコレクションが表示されたページが表示されます。

次のステップ
チュートリアルの次のパートでは、プロジェクトにデータベースを追加して設定し、HTTPリクエストを実行します。
