Spring Bootプロジェクトにデータクラスを追加する
これはSpring BootとKotlin入門チュートリアルの2番目のパートです。続行する前に、以前のステップを完了していることを確認してください。
KotlinでSpring Bootプロジェクトを作成する
Spring Bootプロジェクトにデータクラスを追加する
Spring Bootプロジェクトにデータベースサポートを追加する
Spring Data CrudRepositoryを使用してデータベースにアクセスする
このチュートリアルのこのパートでは、アプリケーションにいくつかの機能を追加し、データクラスなど、Kotlin言語のさらなる機能を発見します。 MessageController
クラスを変更して、シリアライズされたオブジェクトのコレクションを含むJSONドキュメントで応答するようにする必要があります。
アプリケーションを更新する
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ドキュメントを構成します。- `var`キーワードを使用した可変
- `val`キーワードを使用した読み取り専用
データクラス – data class Message
Kotlinのデータクラスの主な目的は、データを保持することです。このようなクラスは`data`キーワードでマークされ、クラス構造から、いくつかの標準機能やユーティリティ関数が機械的に導出されることがよくあります。
この例では、`Message`をデータクラスとして宣言しました。その主な目的はデータを格納することだからです。
valおよびvarプロパティ
Kotlinクラスのプロパティは、以下のいずれかの方法で宣言できます。
`Message`クラスは、`val`キーワードを使用して`id`と`text`という2つのプロパティを宣言しています。 コンパイラは、これら両方のプロパティに対して自動的にゲッターを生成します。 `Message`クラスのインスタンスが作成された後、これらのプロパティの値を再代入することはできません。
Null許容型 – String?
KotlinはNull許容型に対する組み込みサポートを提供しています。Kotlinでは、型システムが`null`を保持できる参照(Null許容参照)と、保持できない参照(Null非許容参照)を区別します。
例えば、`String`型の通常の変数は`null`を保持できません。`null`を許可するには、`String?`と記述することで変数をNull許容文字列として宣言できます。`Message`クラスの`id`プロパティは、今回はNull許容型として宣言されています。 したがって、`id`の値として`null`を渡して`Message`クラスのインスタンスを作成することが可能です。
kotlinMessage(null, "Hello!")
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)とは、要素の並びの最後の項目の後ろにあるカンマ記号のことです。
kotlinMessage("3", "Privet!"),
これはKotlinの構文の便利な機能であり、完全にオプションです。これらがなくてもコードは動作します。
上記の例では、`Message`オブジェクトのリストを作成する際に、最後の`listOf()`関数の引数の後に末尾のカンマが含まれています。
MessageController
からのレスポンスは、Message
オブジェクトのコレクションを含むJSONドキュメントになります。
NOTE
Springアプリケーション内の任意のコントローラーは、Jacksonライブラリがクラスパスにある場合、デフォルトでJSONレスポンスをレンダリングします。
build.gradle.kts
ファイルでspring-boot-starter-web
依存関係を指定したため、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:8080
JSON形式のメッセージコレクションを含むページが表示されます。
次のステップ
チュートリアルの次のパートでは、プロジェクトにデータベースを追加して設定し、HTTPリクエストを行います。