Spring Boot プロジェクトへのデータクラスの追加
これは、Spring BootとKotlin入門チュートリアルの第2部です。先に進む前に、必ず前の手順を完了してください。
KotlinでSpring Bootプロジェクトを作成する
Spring Bootプロジェクトにデータクラスを追加する
Spring Bootプロジェクトにデータベースのサポートを追加する
Spring Data CrudRepositoryを使用してデータベースにアクセスする
このチュートリアルのパートでは、アプリケーションにさらに機能を追加し、データクラスなどのKotlinの言語機能をさらに詳しく説明します。
MessageController
クラスを変更して、シリアル化されたオブジェクトのコレクションを含むJSONドキュメントで応答する必要があります。
アプリケーションを更新する
-
同じパッケージに、2つのプロパティ
id
とtext
を持つデータクラスを含むMessage.kt
ファイルを作成します。// Message.kt
package demo
data class Message(val id: String?, val text: String)Message
クラスはデータ転送に使用されます。シリアル化されたMessage
オブジェクトのリストは、コントローラーがブラウザーリクエストに応答するJSONドキュメントを構成します。データクラス – data class Message
Kotlinのデータクラスの主な目的は、データを保持することです。このようなクラスはdata
キーワードでマークされており、一部の標準機能と一部のユーティリティ関数は、多くの場合、クラス構造から機械的に導き出すことができます。
この例では、Message
の主な目的はデータを格納することであるため、Message
をデータクラスとして宣言しました。
valとvarプロパティ
Kotlinのプロパティは、次のように宣言できます。
var
キーワードを使用val
キーワードを使用Message
クラスは、val
キーワードを使用して、id
とtext
の2つのプロパティを宣言します。
コンパイラーは、これらのプロパティの両方のゲッターを自動的に生成します。
Message
クラスのインスタンスが作成された後、これらのプロパティの値を再割り当てすることはできません。
Nullable(nullable)型 – String?
Kotlinは、nullable(nullable)型の組み込みサポートを提供します。Kotlinでは、型システムは、null
を保持できる参照(nullable参照)と、そうでない参照(non-nullable参照)を区別します。
たとえば、String
型の通常の変数はnull
を保持できません。nullを許可するには、String?
と記述して、変数をnullable文字列として宣言できます。
Message
クラスのid
プロパティは、今回はnullable型として宣言されています。
したがって、id
の値としてnull
を渡すことにより、Message
クラスのインスタンスを作成できます。
Message(null, "Hello!")
-
MessageController.kt
ファイルで、index()
関数の代わりに、Message
オブジェクトのリストを返すlistMessages()
関数を作成します。// MessageController.kt
package 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
オブジェクトのリストを作成します。
これは、オブジェクトのread-onlyリストを作成するファクトリ関数です。リストから要素を追加または削除することはできません。
リストに対して書き込み操作を実行する必要がある場合は、mutableListOf()
関数を呼び出して、mutableリストインスタンスを作成します。
Trailing comma(末尾のカンマ)
末尾のカンマは、要素のシリーズの最後の項目の後のカンマ記号です。
Message("3", "Privet!"),
これはKotlin構文の便利な機能であり、完全にオプションです。コードはなくても機能します。
上記の例では、Message
オブジェクトのリストの作成には、最後のlistOf()
関数引数の後の末尾のカンマが含まれています。
MessageController
からの応答は、Message
オブジェクトのコレクションを含むJSONドキュメントになります。
Jacksonライブラリがクラスパスにある場合、SpringアプリケーションのコントローラーはデフォルトでJSON応答をレンダリングします。
build.gradle.kts
ファイルでspring-boot-starter-web
依存関係を指定したため、Jacksonを_推移的_な依存関係として受け取りました。
したがって、アプリケーションは、エンドポイントがJSONにシリアル化できるデータ構造を返す場合、JSONドキュメントで応答します。
以下は、DemoApplication.kt
、MessageController.kt
、およびMessage.kt
ファイルの完全なコードです。
// DemoApplication.kt
package 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 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 demo
data class Message(val id: String?, val text: String)
アプリケーションを実行する
Springアプリケーションを実行する準備ができました。
-
アプリケーションを再度実行します。
-
アプリケーションが起動したら、次のURLを開きます。
http://localhost:8080
JSON形式のメッセージのコレクションを含むページが表示されます。
次のステップ
チュートリアルの次のパートでは、プロジェクトにデータベースを追加して構成し、HTTPリクエストを作成します。