Thymeleafのソース変更を自動でリロードする

spring-devtoolsを設定して、より快適に開発しよう

概要

Spring BootでCRUDを実装しているときに、Thymeleafのコード(.html)を修正してもすぐに反映されず、再起動してから変更が反映されることがありました。
なぜ変更がすぐに反映されないのでしょうか?

理由

Thymeleafはパフォーマンス向上のため、レンダリングしたページをキャッシュしています。
また、テンプレートを変更しても再読み込みされないため、修正内容がすぐには反映されません。

どうすればよい?

開発時には、Thymeleafのキャッシュオプションを無効にすればよいです。
application.ymlに次のプロパティを追加します。

spring:
  thymeleaf:
    cache: false

DevToolsの紹介

せっかくなので、Javaのソース変更も検知して自動で再ビルドされるようにしましょう。
Spring Bootは、devtoolsという便利なライブラリを提供しています。

DevToolsのインストール

Gradleの依存関係を追加

dependencies {
  compileOnly 'org.springframework.boot:spring-boot-devtools'
}

application.ymlを修正

spring:
  devtools:
    livereload:
      enabled: true
    restart:
      enabled: true

Eclipseの設定変更

Eclipse上部のツールバーでProject > Build Automaticallyを有効にします。