はじめての Sprint Boot in Kotlin

概要

Spring Boot での開発環境を構築する手順を説明します。 インストールから、ブラウザでページに Hello World を表示させるまでの手順です。 開発言語には Kotlin、ビルドツールには Gradle を使います。

確認環境

  • IntelliJ IDEA COMMUNITY 2016.2
  • Spring Boot 1.4.0

参考情報

背景

Kotlin は IntelliJ IDEA を開発している JetBrains 社によって開発された言語です。 2016 年にバージョン 1.0 がリリースされました。 Kotlin コンパイラJava バイトコードを生成するため、Kotlin で書かれたプログラムは Java VM で動かすことができます。 Java 互換をうたっており、Java のライブラリを使用することも、Java から呼び出すこともできます。

IntelliJ IDEA は Android Studio のベースになっている IDE です。 Android Studio では Gradle が標準のビルドツールになっており、 Android Studio + Gradle + Kotlin による開発環境を容易に構築することができます。

Web 開発といえば Eclipse の使用が定石とは思いますが、 Kotlin を使うことを前提とするため、 Android Studio + Gradle + Kotiln と親和性の高い環境である IntelliJ IDEA + Gradle + Kotlin を使います。

手順

以降は下記の順番に説明する。

  1. SPRING INITIALIZER を使って、Gradle プロジェクトを作成する
  2. IntelliJ IDEA に Gradle プロジェクトをインポートする
  3. ソースコードを編集する
  4. サーバーを起動してブラウザで確認する
  5. Automatic-restart を試す
  6. LiveReload を試す

SPRING INITIALIZER のページで、Gradle プロジェクトを作成する。 Generate Project ボタンの下にある、Switch to the full version と書かれたリンクをクリックする。 各項目は下記のように選択、もしくは入力した。

  • Generate a Gradle Project with Spring Boot 1.4.0
  • Group, Artifact, Name, Description, Package Name
    • Package Name は Group + Artifact と同じに
    • Artifact と Name は同じに
    • Description は適当に
  • Packaging : War
    • Jar にすると Tomcat を内包した実行可能な jar ができる(はず)
  • Java Version : 1.8
  • Language : Kotlin
  • Selected Dependenccies : DevTools, Web
    • DevTools : Spring Boot 開発ツール
    • Web : Tomcat と Spring MVC によるフルスタックウェブ開発

Generate Project ボタンをクリックすると ZIP ファイルがダウンロードされる。

IntelliJ IDEA にプロジェクトをインポートする。 ダンロードした ZIP ファイルを IdeaProjects ディレクトリに展開後、IntelliJ IDEA を起動。 Import Project を選択し、展開したディレクトリを選択。 Import project from external models で Gradle を選択し、デフォルト設定で Finish。

Hello World を表示するだけの RestController (HelloController.kt) を追加する。

package org.anyspirit.webapp.feature.web

import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController

@RestController
class HelloController {

    @RequestMapping("/")
    fun index(): String = "Hello World"
}

Tomcat を起動して、Chrome で確認する。 Tomcat を起動するためには Gradle で bootRun タスクを実行する。 IDE の Gradle ツールから起動することもできるが、後で説明する Automatic-restart が期待通りに動作しないため Terminal から起動する。

$ ./gradlew bootRun

http://localhost:8080 をブラウザで開くと Hello World が表示される。

HelloController.kt の Hello World を他の文字に変更した時に自動的に反映されるようにしたい。 自動的にコンパイルするよう IDE の設定を変更する。 設定画面で Build, Execution, Deployment > Compiler > Make project automatically を ON にする。

Terminal で bootRun タスクを実行したままで、HelloController.kt を Hello World から Hello Beautiful World に変更する。 自動的にコンパイルされ、Automatic-restart が行われて Terminal の表示が更新される。 (Automatic-restart は DevTools の機能。) ブラウザの表示を更新すると Hello Beautiful World が表示される。

ブラウザの表示更新を自動化する。 http://livereload.com/extensions/ から Chrome 拡張のリンクを辿り、LiveReload 拡張をインストールする。 http://localhost:8080 を表示して、LiveRecorad 拡張のアイコンをクリックすることで LiveReload を有効にする。

Terminal で bootRun タスクを実行したままで、HelloController.kt を Hello Beautiful World から Hello Beautifull World!!! に変更する。 ブラウザの表示が自動的に更新され Hello Beautiful World!!! が表示される。

更新に時間がかかりエラーページが一時的に表示されるときがある。 どれだけ待っても更新されないような時は Spring Boot Reference Documentation を参考にして Spring Loaded を試してみると良いかもしれない。