KotlinでSpring Bootプロジェクトを作成する
これは、Spring BootとKotlin入門チュートリアルの最初のパートです。
KotlinでSpring Bootプロジェクトを作成する
Spring Bootプロジェクトにデータクラスを追加する
Spring Bootプロジェクトのデータベースサポートを追加する
データベースアクセスにSpring Data CrudRepositoryを使用する
チュートリアルの最初のパートでは、IntelliJ IDEAのプロジェクトウィザードを使用して、GradleでSpring Bootプロジェクトを作成する方法を示します。
このチュートリアルでは、ビルドシステムとしてGradleを使用する必要はありません。Mavenを使用する場合でも、同じ手順に従うことができます。
開始する前に
IntelliJ IDEA Ultimate Editionの最新バージョンをダウンロードしてインストールしてください。
IntelliJ IDEA Community Editionまたは他のIDEを使用している場合は、 ウェブベースのプロジェクトジェネレーターを使用してSpring Bootプロジェクトを生成できます。
Spring Bootプロジェクトを作成する
IntelliJ IDEA Ultimate Editionのプロジェクトウィザードを使用して、Kotlinで新しいSpring Bootプロジェクトを作成します。
- IntelliJ IDEAで、File | New | Projectを選択します。
- 左側のパネルで、New Project | Spring Bootを選択します。
- New Projectウィンドウで、以下のフィールドとオプションを指定します。
- Name: demo
- Language: Kotlin
- Type: Gradle - Kotlin
> このオプションは、ビルドシステムとDSLを指定します。
>
{style="tip"}
- Package name: com.example.demo
- JDK: Java JDK
> このチュートリアルでは、**Amazon Corretto version 23**を使用します。
> JDKがインストールされていない場合、ドロップダウンリストからダウンロードできます。
>
{style="note"}
- Java: 17
> Java 17がインストールされていない場合、JDKドロップダウンリストからダウンロードできます。
>
{style="tip"}

すべてのフィールドが指定されていることを確認し、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.25" // 使用するKotlinのバージョン
kotlin("plugin.spring") version "1.9.25" // Kotlin Springプラグイン
id("org.springframework.boot") version "3.4.5"
id("io.spring.dependency-management") version "1.1.7"
}
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") // JSONを扱うためのKotlin用Jackson拡張
implementation("org.jetbrains.kotlin:kotlin-reflect") // Kotlinリフレクションライブラリ。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`はJSR-305アノテーションの厳格モードを有効にする
}
}
tasks.withType<Test> {
useJUnitPlatform()
}ご覧のとおり、GradleビルドファイルにはいくつかのKotlin関連のアーティファクトが追加されています。
pluginsブロックには2つのKotlinアーティファクトがあります。
kotlin("jvm")– プロジェクトで使用するKotlinのバージョンを定義するプラグインkotlin("plugin.spring")– Spring Frameworkの機能と互換性を持たせるために、Kotlinクラスにopen修飾子を追加するKotlin Springコンパイラプラグイン
dependenciesブロックには、いくつかのKotlin関連モジュールがリストされています。
com.fasterxml.jackson.module:jackson-module-kotlin– Kotlinクラスおよびデータクラスのシリアライズとデシリアライズのサポートを追加するモジュールorg.jetbrains.kotlin:kotlin-reflect– Kotlinリフレクションライブラリ
- 依存関係セクションの後には、
kotlinプラグインの設定ブロックが表示されます。 ここでは、さまざまな言語機能を有効または無効にするために、コンパイラに追加の引数を追加できます。
Kotlinコンパイラのオプションの詳細については、を参照してください。
生成されたSpring Bootアプリケーションを確認する
DemoApplication.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)
}クラスの宣言 – class DemoApplication
パッケージ宣言とインポート文の直後に、最初のクラス宣言であるclass DemoApplicationが表示されます。
Kotlinでは、クラスにメンバー(プロパティや関数)が含まれていない場合、クラス本体({})を省略することができます。
@SpringBootApplicationアノテーション
@SpringBootApplicationアノテーションは、Spring Bootアプリケーションの便利なアノテーションです。 Spring Bootの自動構成、コンポーネントスキャンを有効にし、その「アプリケーションクラス」に追加の構成を定義できるようにします。
可変引数 – args: Array<String>
runApplication()関数の宣言を確認すると、関数のパラメータがvararg修飾子でマークされていることがわかります。vararg args: Stringです。 これは、関数に可変数のString引数を渡すことができることを意味します。
スプレッド演算子 – (*args)
argsは、main()関数へのパラメータであり、Stringの配列として宣言されています。 Stringの配列があり、その内容を関数に渡したい場合は、スプレッド演算子(配列の前にアスタリスク*を付ける)を使用します。
コントローラーを作成する
アプリケーションを実行する準備ができていますが、まずそのロジックを更新しましょう。
Springアプリケーションでは、Webリクエストを処理するためにコントローラーが使用されます。 DemoApplication.ktファイルと同じパッケージに、MessageController.ktファイルを以下のMessageControllerクラスとともに作成します。
// MessageController.kt
package com.example.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コントローラーであることをSpringに伝える必要があるため、@RestControllerアノテーションでマークする必要があります。
このアノテーションは、このクラスがDemoApplicationクラスと同じパッケージにあるため、コンポーネントスキャンによって取得されることを意味します。
@GetMappingアノテーション
@GetMappingは、HTTP GET呼び出しに対応するエンドポイントを実装するRESTコントローラーの関数をマークします。
@RequestParamアノテーション
関数パラメータnameは@RequestParamアノテーションでマークされています。このアノテーションは、メソッドパラメータがWebリクエストパラメータにバインドされるべきであることを示します。
したがって、ルートでアプリケーションにアクセスし、/?name=<your-value>のように「name」というリクエストパラメータを提供すると、そのパラメータ値がindex()関数を呼び出すための引数として使用されます。
単一式関数 – index()
index()関数には1つのステートメントしか含まれていないため、単一式関数として宣言できます。
これは、中括弧を省略でき、本文が等号=の後に指定されることを意味します。
関数の戻り値の型の型推論
index()関数は、戻り値の型を明示的に宣言していません。代わりに、コンパイラは等号=の右側のステートメントの結果を見て、戻り値の型を推論します。
Hello, $name!式の型はStringであるため、関数の戻り値の型もStringです。
文字列テンプレート – $name
アプリケーションを実行する
Springアプリケーションの実行準備が整いました。
DemoApplication.ktファイルで、main()メソッドの横にあるガターの緑色のRunアイコンをクリックします。
ターミナルで
./gradlew bootRunコマンドを実行することもできます。これにより、ローカルサーバーがコンピューター上で起動します。
アプリケーションが起動したら、以下のURLを開きます。
texthttp://localhost:8080?name=John「Hello, John!」という応答が表示されるはずです。

次のステップ
チュートリアルの次のパートでは、Kotlinのデータクラスについて、そしてそれらをアプリケーションでどのように使用できるかを学びます。
