Kotlin で Spring Boot プロジェクトを作成する
これは、Spring BootとKotlin入門チュートリアルの最初の部分です。
KotlinでSpring Bootプロジェクトを作成する
Spring Bootプロジェクトにデータクラスを追加する
Spring Bootプロジェクトにデータベースサポートを追加する
Spring Data CrudRepository を使用してデータベースにアクセスする
チュートリアルの最初の部分では、Project Wizard を使用して IntelliJ IDEA で Spring Boot プロジェクトを作成する方法を説明します。
はじめる前に
IntelliJ IDEA Ultimate Edition の最新バージョンをダウンロードしてインストールします。
IntelliJ IDEA Community Edition または別の IDE を使用する場合は、ウェブベースのプロジェクトジェネレーター を使用して Spring Boot プロジェクトを生成できます。
Spring Bootプロジェクトを作成する
IntelliJ IDEA Ultimate Edition の Project Wizard を使用して、Kotlin で新しい Spring Boot プロジェクトを作成します。
Spring Boot プラグインを備えた IntelliJ IDEA を使用して、新しいプロジェクトを作成することもできます。
-
IntelliJ IDEA で、File | New | Project を選択します。
-
左側のパネルで、New Project | Spring Boot を選択します。
-
Project Wizard ウィンドウで、次のフィールドとオプションを指定します。
-
Name: demo
-
Language: Kotlin
-
Type: Gradle - Kotlin
このオプションは、ビルドシステムと DSL を指定します。
-
Package name: demo
-
JDK: Java JDK
このチュートリアルでは、Amazon Corretto version 21 を使用します。 JDK がインストールされていない場合は、ドロップダウンリストからダウンロードできます。
-
Java: 17
-
-
すべてのフィールドが指定されていることを確認し、Next をクリックします。
-
チュートリアルに必要な次の依存関係を選択します。
- Web | Spring Web
- SQL | Spring Data JDBC
- SQL | H2 Database
-
Create をクリックして、プロジェクトを生成およびセットアップします。
IDE が新しいプロジェクトを生成して開きます。プロジェクトの依存関係のダウンロードとインポートに時間がかかる場合があります。
-
この後、Project view で次の構造を確認できます。
生成された Gradle プロジェクトは、Maven の標準ディレクトリレイアウトに対応しています。
- アプリケーションに属するパッケージとクラスは、
main/kotlin
フォルダの下にあります。 - アプリケーションのエントリーポイントは、
DemoApplication.kt
ファイルのmain()
メソッドです。
- アプリケーションに属するパッケージとクラスは、
プロジェクトの Gradle ビルドファイル を調べる
build.gradle.kts
ファイルを開きます。これは Gradle Kotlin ビルドスクリプトであり、アプリケーションに必要な依存関係のリストが含まれています。
Gradle ファイルは Spring Boot では標準ですが、kotlin-spring Gradle プラグイン (kotlin("plugin.spring")
) を含む、必要な Kotlin の依存関係も含まれています。
以下は、すべての部分と依存関係の説明を含む完全なスクリプトです。
// build.gradle.kts
plugins {
kotlin("jvm") version "1.9.24" // The version of Kotlin to use
kotlin("plugin.spring") version "1.9.24" // The Kotlin Spring plugin
id("org.springframework.boot") version "3.3.4"
id("io.spring.dependency-management") version "1.1.6"
}
group = "com.example"
version = "0.0.1-SNAPSHOT"
java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jdbc")
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin") // Jackson extensions for Kotlin for working with JSON
implementation("org.jetbrains.kotlin:kotlin-reflect") // Kotlin reflection library, required for working with Spring
runtimeOnly("com.h2database:h2")
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}
kotlin {
compilerOptions {
freeCompilerArgs.addAll("-Xjsr305=strict") // `-Xjsr305=strict` enables the strict mode for JSR-305 annotations
}
}
tasks.withType<Test> {
useJUnitPlatform()
}
ご覧のとおり、Gradle ビルドファイルにはいくつかの Kotlin 関連の成果物が追加されています。
-
plugins
ブロックには、2 つの Kotlin 成果物があります。kotlin("jvm")
– プラグインは、プロジェクトで使用する Kotlin のバージョンを定義しますkotlin("plugin.spring")
– Kotlin Spring コンパイラープラグイン。Spring Framework の機能と互換性を持たせるために、Kotlin クラスにopen
修飾子を追加します
-
dependencies
ブロックには、いくつかの Kotlin 関連のモジュールがリストされています。com.fasterxml.jackson.module:jackson-module-kotlin
– モジュールは、Kotlin クラスおよびデータクラスのシリアル化とデシリアル化のサポートを追加しますorg.jetbrains.kotlin:kotlin-reflect
– Kotlin リフレクションライブラリ
-
依存関係セクションの後に、
kotlin
プラグイン構成ブロックが表示されます。 ここでは、コンパイラーに追加の引数を追加して、さまざまな言語機能を有効または無効にできます。
生成されたSpring Bootアプリケーションを調べる
DemoApplication.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)
}
クラスの宣言 – class DemoApplication
パッケージの宣言とインポートステートメントの直後に、最初のクラス宣言 class DemoApplication
が表示されます。
Kotlin では、クラスにメンバー (プロパティまたは関数) が含まれていない場合は、クラス本体 ({}
) を省略できます。
@SpringBootApplication アノテーション
@SpringBootApplication annotation
は、Spring Boot アプリケーションの便利なアノテーションです。
Spring Boot の 自動構成、コンポーネントスキャンを有効にし、「アプリケーションクラス」で追加の構成を定義できるようにします。
プログラムのエントリーポイント – main()
main()
関数は、アプリケーションのエントリーポイントです。
これは、DemoApplication
クラスの外側の トップレベル関数 として宣言されています。main()
関数は、Spring の runApplication(*args)
関数を呼び出して、Spring Framework でアプリケーションを起動します。
可変引数 – args: Array<String>
runApplication()
関数の宣言を確認すると、関数のパラメータが vararg
修飾子: vararg args: String
でマークされていることがわかります。
これは、可変数の String 引数を関数に渡すことができることを意味します。
スプレッド演算子 – (*args)
args
は、String の配列として宣言された main()
関数のパラメータです。
文字列の配列があり、そのコンテンツを関数に渡したい場合は、スプレッド演算子を使用します (配列の前にアスタリスク記号 *
を付けます)。
コントローラーの作成
アプリケーションは実行する準備ができていますが、最初にそのロジックを更新しましょう。
Spring アプリケーションでは、コントローラーはウェブ要求を処理するために使用されます。
DemoApplication.kt
ファイルと同じパッケージで、MessageController
クラスを含む MessageController.kt
ファイルを次のように作成します。
// MessageController.kt
package demo
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
@RestController
class MessageController {
@GetMapping("/")
fun index(@RequestParam("name") name: String) = "Hello, $name!"
}
@RestController アノテーション
MessageController
が REST Controller であることを Spring に伝える必要があるため、@RestController
アノテーションでマークする必要があります。
このアノテーションは、このクラスが DemoApplication
クラスと同じパッケージにあるため、コンポーネントスキャンによって選択されることを意味します。
@GetMapping アノテーション
@GetMapping
は、HTTP GET 呼び出しに対応するエンドポイントを実装する REST コントローラーの関数をマークします。
@GetMapping("/")
fun index(@RequestParam("name") name: String) = "Hello, $name!"
@RequestParam アノテーション
関数パラメータ name
は @RequestParam
アノテーションでマークされています。このアノテーションは、メソッドパラメータをウェブ要求パラメータにバインドする必要があることを示します。
したがって、ルートでアプリケーションにアクセスし、/?name=<your-value>
のように「name」という要求パラメータを指定すると、パラメータ値は index()
関数を呼び出すための引数として使用されます。
単一式関数 – index()
index()
関数にはステートメントが 1 つしかないため、単一式関数として宣言できます。
これは、中括弧を省略でき、本体が等号 =
の後に指定されることを意味します。
関数戻り値の型の型推論
index()
関数は、戻り値の型を明示的に宣言しません。代わりに、コンパイラーは等号 =
の右側のステートメントの結果を見て戻り値の型を推論します。
Hello, $name!
式の型は String
であるため、関数の戻り値の型も String
です。
文字列テンプレート – $name
Hello, $name!
式は、Kotlin では 文字列テンプレート と呼ばれます。
文字列テンプレートは、埋め込み式を含む文字列リテラルです。
これは、文字列連結操作の便利な代替手段です。
アプリケーションの実行
Spring アプリケーションを実行する準備ができました。
-
main()
メソッドの横にあるガターにある緑色の実行アイコンをクリックします。ターミナルで
./gradlew bootRun
コマンドを実行することもできます。これにより、ローカルサーバーがコンピューター上で起動します。
-
アプリケーションが起動したら、次の URL を開きます。
http://localhost:8080?name=John
「Hello, John!」が応答として出力されるはずです。
次のステップ
チュートリアルの次のパートでは、Kotlin データクラスと、アプリケーションでの使用方法について学習します。