Spring Boot DevTools
Spring Boot 入門 で依存関係に加えた Spring Boot DevTools は、開発時にコードやテンプレートの変更を反映するためのツールです。主に次の 3 つを行います。
- Automatic Restart(自動再起動): コード(
.class)の変更を検知してアプリを再起動する - Property Defaults: テンプレートなどのキャッシュを無効にし、再起動なしで反映できるようにする
- LiveReload: リソースの変更で Chrome を自動更新する(Chrome 拡張が必要)
1. 変更の自動反映
Section titled “1. 変更の自動反映”変更したファイルの種類によって、反映のされ方が異なります。
| 変更したもの | 反映のされ方 |
|---|---|
| Java コード | 自動再起動(保存で再起動) |
| テンプレート・静的リソース | 再起動なし。ブラウザー再読み込みで反映 |
application.properties | 自動再起動 |
1-1. Automatic Restart
Section titled “1-1. Automatic Restart”DevTools の Automatic Restart(自動再起動)は、クラスパス(コンパイル済みの .class)の変化を監視し、検知するとアプリを再起動します。VS Code の Java 拡張は保存時に自動でコンパイルするため、Java コードを保存すると再起動されます。
再起動時は、読み込み済みのライブラリーを読み直さず、変更されたクラスだけを読み直すため、通常の起動より短い時間で完了します。起動ログに Restarting due to ... や restartedMain が出力されます。
1-2. Property Defaults
Section titled “1-2. Property Defaults”DevTools の Property Defaults は、開発時に向いたプロパティの既定値を設定します。その 1 つが、テンプレート(Thymeleaf の .html)や static/ のキャッシュの無効化です。キャッシュが無効なので、ファイルを保存してブラウザーを再読み込みすると変更が反映され、Java コードと違って再起動は要りません。
1-3. LiveReload
Section titled “1-3. LiveReload”テンプレートや静的リソースを変更したときのブラウザーの再読み込みを、LiveReload が自動化します。DevTools が内蔵する LiveReload サーバーがリソースの変更を検知し、Chrome を自動で再読み込みします。動かすには Chrome に LiveReload 拡張機能を入れます(拡張がなければ手動で再読み込みします)。
2. 開発時のツール
Section titled “2. 開発時のツール”DevTools は開発時のためのツールです。手動の停止・起動と併用でき、本番のビルドでは無効になります。
2-1. 手動の停止・起動
Section titled “2-1. 手動の停止・起動”DevTools が加わっても、サーバーの停止 の手動操作はそのまま使えます。ビルドが実行されない、変更が部分的にしか反映されない、といったときは、いったん停止して起動し直すと確実に反映できます。ポート 8080 の衝突も、手動で停止すれば解消します。
2-2. 本番では無効
Section titled “2-2. 本番では無効”DevTools は開発時だけのツールです。実行可能 JAR(本番)として起動したときは自動的に無効になり、再起動の監視は行われません。