Breaking News

Default Placeholder Default Placeholder

はじめに

  • ローカル環境で開発をするときって素早く開発を進めたいですよね
  • でも、仕組みによっては修正した内容が反映されずに、ローカルサーバを再起動する必要があります
  • 本記事では、Spring Frameworkのコンテナで、修正内容がすぐに反映されるLive Reloadの方法をまとめていきます

前提

  • 前回の記事で構築した環境を使います
  • 詳しくは下記の記事を参照ください
  • STSを使います

やること

  • DevToolsを導入
  • secretの設定
  • Run設定

DevToolsを導入

  • STSで Add Startersをクリック
  • Developer Tools 配下の Spring Boot DevTools を選択する
  • Nextをクリックして先に進む
  • これでOK

secretの設定

  • src > main > resourcesディレクトリ配下の application.propertiesファイルを編集していきます
spring.devtools.remote.secret=xxxxxxxx
  • 値(ここではxxxxxxxxとしている箇所)はなんでも良いです

Run設定

  • STSで Run Configurationsを開く
  • Java Applicationをダブルクリックする
  • Projectに適切な名前を入力する
  • Main Classに `org.springframework.boot.devtools.RemoteSpringApplication`を入力する
  • Arguments タブを開く
  • Program argumentsのテキストエリアにSpringコンテナのURLを貼る
    • 例: http://localhost:8080
  • Runをクリックして以下の画像のようになればOK
    • ここで注意なのは、すでにSpringのコンテナが起動していること
    • コンテナが起動していなくてもエラーになることはありません
    • ただ、このRun単体ではコンテナは起動しません
    • あくまでも、Live Reloadするだけの仕組みになります
    • なので、こことは別でSpringコンテナを起動する必要があります
  • これで準備完了です

修正が反映されるか試してみる

  • APIの戻り値を管理している IndexController.javaを修正してみます
  • 元の状態はこんな感じです
package com.nothingbehind.spring.sample.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {
    @GetMapping("/")
    public String index() {
        return "hello!!!!!";
    }
}
  • この状態でCURLするとこうなります
% curl http://localhost:8080
hello!!!!!
  • これをこうします
package com.nothingbehind.spring.sample.controllers;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class IndexController {
	@GetMapping("/")
    public String index() {
        return "hello, world!";
    }
}
  • 修正して保存すると、LiveReloadが反応します
  • Remote server has changedって出てますね
  • 再度CURLしてみます
% curl http://localhost:8080
hello, world!
  • 修正が反映されています
  • 成功です!

以上で、SpringコンテナのLiveReloadの方法まとめを終わります。