Skip to content

Spring Bootプロジェクトにデータクラスを追加する

これは「Spring BootとKotlinを始める」チュートリアルの第2部です。続行する前に、以前のステップが完了していることを確認してください:


最初のステップ KotlinでSpring Bootプロジェクトを作成する
2番目のステップ Spring Bootプロジェクトにデータクラスを追加する
3番目のステップ Spring Bootプロジェクトにデータベースサポートを追加する
4番目のステップ データベースアクセスにSpring Data CrudRepositoryを使用する

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

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

  1. 同じパッケージ内のDemoApplication.ktファイルの隣に、Message.ktファイルを作成します。

  2. Message.ktファイルに、idtextという2つのプロパティを持つデータクラスを作成します:

    kotlin
    // Message.kt
    package com.example.demo
    
    data class Message(val id: String?, val text: String)

    Messageクラスはデータ転送に使用されます。シリアライズされたMessageオブジェクトのリストが、コントローラーがブラウザのリクエストに応答するJSONドキュメントを構成します。

    データクラス – データクラス Message

    Kotlinのデータクラスの主な目的はデータを保持することです。このようなクラスはdataキーワードでマークされ、いくつかの標準的な機能やユーティリティ関数は、クラス構造から機械的に導出されることがよくあります。

    この例では、Messageクラスの主な目的がデータを保存することであるため、データクラスとして宣言しました。

    valとvarプロパティ

    Kotlinクラスのプロパティは、以下のいずれかの方法で宣言できます:

    • 可変varキーワードを使用)
    • 読み取り専用valキーワードを使用)

    Messageクラスは、valキーワードを使用して、idtextの2つのプロパティを宣言しています。 コンパイラはこれら両方のプロパティに対してゲッターを自動的に生成します。 Messageクラスのインスタンスが作成された後、これらのプロパティの値を再代入することはできません。

    Null許容型 – String?

    Kotlinはnull許容型の組み込みサポートを提供します。Kotlinでは、型システムがnullを保持できる参照(null許容参照)と、保持できない参照(非null許容参照)を区別します。
    例えば、通常のString型の変数はnullを保持できません。nullを許可するには、String?と記述して変数をnull許容文字列として宣言できます。

    Messageクラスのidプロパティは、今回はnull許容型として宣言されています。 したがって、idの値としてnullを渡してMessageクラスのインスタンスを作成することが可能です:

    kotlin
  3. 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()関数を呼び出して可変リストインスタンスを作成します。

    末尾のカンマ

    末尾のカンマは、一連の要素の最後の項目の後ろに付くカンマ記号です:

    kotlin

    これはKotlinの構文の便利な機能であり、完全にオプションです。これらがなくてもコードは動作します。

    上記の例では、Messageオブジェクトのリストを作成する際に、最後のlistOf()関数の引数の後に末尾のカンマが含まれています。

MessageControllerからの応答は、Messageオブジェクトのコレクションを含むJSONドキュメントになります。

Springアプリケーション内の任意のコントローラーは、Jacksonライブラリがクラスパスにあれば、デフォルトでJSON応答をレンダリングします。 build.gradle.ktsファイルでspring-boot-starter-webの依存関係を指定したため、Jacksonは_推移的_依存関係として含まれています。 したがって、エンドポイントがJSONにシリアライズ可能なデータ構造を返した場合、アプリケーションはJSONドキュメントで応答します。

DemoApplication.ktMessageController.ktMessage.ktファイルの完全なコードを以下に示します:

kotlin
// 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)
}
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!"),
    )
}
kotlin
// Message.kt
package com.example.demo

data class Message(val id: String?, val text: String)

アプリケーションを実行する

Springアプリケーションを実行する準備ができました:

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

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

    text
    http://localhost:8080

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

    アプリケーションを実行する

次のステップ

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

次のチャプターに進む