Kotlin で Spring Boot を動かしてみます。
環境は以下のとおりです。
- Kotlin: Kotlin version 1.2.41-release-74 (JRE 1.8.0_31-b13)
- Java: java version "1.8.0_31"
- Gradle: Gradle 4.7
- Spring Boot: 2.0.2
- IntelliJ: 2018.1.3
SPRING INITIALIZR でベース作成
まずは、 SPRING INITIALIZR でプロジェクトベースを作成します。
SPRING INITIALIZR で kotlin がサポートされていますので、 「Generate a {Gradle Project|Meven Project} with {Kotlin} and Spring Boot {Version}」を選択するだけで kotlin ベースで作成できます。
Generate Project を押下するとZIPファイルをダウンロードできるので、任意のディレクトに解凍します。
IntelliJ に import
続いて、 IntelliJ で import します。
- Import Project > 解凍したディレクトリを選択
- Import project from external model > Gradle > Next
- Use loacal gradle destribution > Gradle home を入力
※ Homebrew を使用している場合はbrew info gradle
にlibexec
を追記したパスを入力
- Finish!
gradle がゴリゴリと実行されてプロジェクトがセットアップされます。
Run してみる
JVM target エラーが発生したら
Error:(10, 5) Kotlin: Cannot inline bytecode built with JVM target 1.8 into bytecode that is being built with JVM target 1.6. Please specify proper '-jvm-target' option
Kotlin compiler の JVM target が 1.6 になっていました。
Preferences > Build, Execution, Deployment > Compiler > Kotlin Compiler > Target JVM version
で 1.8 を選択します。
ローカルで何かを表示してみる
適当に返答する Contoller を追加します。
controller/HelloController.kt
package com.dskst.library.librarian.controller import org.springframework.boot.autoconfigure.SpringBootApplication import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.RestController @SpringBootApplication @RestController class HelloController { @GetMapping("/") fun index(): String = "Good job!" }
アクセスして Good job! が表示されれば完了です。
次回はこいつを Docker に持っていこうと思います。
参考
1. [事前準備] Spring BootでHello World — Spring Bootキャンプ ハンズオン資料 1.0.0-SNAPSHOT ドキュメント