Skip to content
Playground

Spring Boot DevTools

Spring Boot 入門 で依存関係に加えた Spring Boot DevTools は、開発時にコードやテンプレートの変更を反映するためのツールです。主に次の 3 つを行います。

  • Automatic Restart(自動再起動): コード(.class)の変更を検知してアプリを再起動する
  • Property Defaults: テンプレートなどのキャッシュを無効にし、再起動なしで反映できるようにする
  • LiveReload: リソースの変更で Chrome を自動更新する(Chrome 拡張が必要)

変更したファイルの種類によって、反映のされ方が異なります。

変更したもの反映のされ方
Java コード自動再起動(保存で再起動)
テンプレート・静的リソース再起動なし。ブラウザー再読み込みで反映
application.properties自動再起動

DevTools の Automatic Restart(自動再起動)は、クラスパス(コンパイル済みの .class)の変化を監視し、検知するとアプリを再起動します。VS Code の Java 拡張は保存時に自動でコンパイルするため、Java コードを保存すると再起動されます。

再起動時は、読み込み済みのライブラリーを読み直さず、変更されたクラスだけを読み直すため、通常の起動より短い時間で完了します。起動ログに Restarting due to ...restartedMain が出力されます。

DevTools の Property Defaults は、開発時に向いたプロパティの既定値を設定します。その 1 つが、テンプレート(Thymeleaf の .html)や static/ のキャッシュの無効化です。キャッシュが無効なので、ファイルを保存してブラウザーを再読み込みすると変更が反映され、Java コードと違って再起動は要りません。

テンプレートや静的リソースを変更したときのブラウザーの再読み込みを、LiveReload が自動化します。DevTools が内蔵する LiveReload サーバーがリソースの変更を検知し、Chrome を自動で再読み込みします。動かすには Chrome に LiveReload 拡張機能を入れます(拡張がなければ手動で再読み込みします)。

DevTools は開発時のためのツールです。手動の停止・起動と併用でき、本番のビルドでは無効になります。

DevTools が加わっても、サーバーの停止 の手動操作はそのまま使えます。ビルドが実行されない、変更が部分的にしか反映されない、といったときは、いったん停止して起動し直すと確実に反映できます。ポート 8080 の衝突も、手動で停止すれば解消します。

DevTools は開発時だけのツールです。実行可能 JAR(本番)として起動したときは自動的に無効になり、再起動の監視は行われません。