メインコンテンツまでスキップ

Spring Boot プロジェクトへのデータクラスの追加

備考

これは、Spring BootとKotlin入門チュートリアルの第2部です。先に進む前に、必ず前の手順を完了してください。


First step KotlinでSpring Bootプロジェクトを作成する
Second step Spring Bootプロジェクトにデータクラスを追加する
Third step Spring Bootプロジェクトにデータベースのサポートを追加する
Fourth step Spring Data CrudRepositoryを使用してデータベースにアクセスする

このチュートリアルのパートでは、アプリケーションにさらに機能を追加し、データクラスなどのKotlinの言語機能をさらに詳しく説明します。 MessageControllerクラスを変更して、シリアル化されたオブジェクトのコレクションを含むJSONドキュメントで応答する必要があります。

アプリケーションを更新する

  1. 同じパッケージに、2つのプロパティidtextを持つデータクラスを含む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のプロパティは、次のように宣言できます。

  • mutable(可変)、varキーワードを使用
  • read-only(読み取り専用)、valキーワードを使用
  • Messageクラスは、valキーワードを使用して、idtextの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!")
    1. 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標準ライブラリは、基本的なコレクション型(セット、リスト、マップ)の実装を提供します。
    インターフェイスのペアは、各コレクション型を表します。

  • コレクション要素へのアクセス操作を提供するread-onlyインターフェイス。
  • 対応するread-onlyインターフェイスを、書き込み操作(要素の追加、削除、更新)で拡張するmutableインターフェイス。
  • 対応するファクトリ関数も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.ktMessageController.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アプリケーションを実行する準備ができました。

    1. アプリケーションを再度実行します。

    2. アプリケーションが起動したら、次のURLを開きます。

      http://localhost:8080

      JSON形式のメッセージのコレクションを含むページが表示されます。

      Run the application

    次のステップ

    チュートリアルの次のパートでは、プロジェクトにデータベースを追加して構成し、HTTPリクエストを作成します。

    次の章に進みます