ホットスワップ
Spring Boot はホットスワップをサポートしています。このセクションでは、その仕組みに関する質問に回答します。
静的コンテンツをリロードする
ホットリロードにはいくつかのオプションがあります。推奨される方法は spring-boot-devtools を使用することです。spring-boot-devtools は、アプリケーションの高速再起動のサポートや、テンプレートキャッシュなどの適切な開発時構成など、追加の開発時機能を提供します。Devtools は、クラスパスの変更を監視することで動作します。つまり、静的リソースの変更を有効にするには、「ビルド」する必要があります。デフォルトでは、Eclipse では変更を保存すると自動的にビルドが実行されます。IntelliJ IDEA では、プロジェクトのビルドコマンドで必要なビルドがトリガーされます。デフォルトの再起動除外により、静的リソースの変更ではアプリケーションの再起動はトリガーされません。あるいは、IDE で実行すること (特にデバッグを有効にした場合) は、開発を行う良い方法です (最新の IDE はすべて静的リソースのリロードをサポートしており、通常は Java クラスの変更のホットスワップもサポートしています)。
最後に、Maven および Gradle プラグインを構成して(addResources プロパティを参照)、ソースから直接静的ファイルをリロードするコマンドラインからの実行をサポートできます。より高いレベルのツールを使用してコードを記述している場合は、外部の css/js コンパイラープロセスで使用できます。
コンテナーを再起動せずにテンプレートをリロードする
Spring Boot でサポートされているテンプレートテクノロジのほとんどには、キャッシュを無効にする構成オプションが含まれています (このドキュメントで後述します)。spring-boot-devtools モジュールを使用する場合、これらのプロパティは開発時に自動的に構成されます。
Thymeleaf テンプレート
Thymeleaf を使用する場合は、spring.thymeleaf.cache を false に設定します。他の Thymeleaf カスタマイズオプションについては、ThymeleafAutoConfiguration [GitHub] (英語) を参照してください。
FreeMarker テンプレート
FreeMarker を使用する場合は、spring.freemarker.cache を false に設定します。他の FreeMarker カスタマイズオプションについては、FreeMarkerAutoConfiguration [GitHub] (英語) を参照してください。
| FreeMarker のテンプレートキャッシュは WebFlux ではサポートされていません。 |
Groovy テンプレート
Groovy テンプレートを使用する場合、spring.groovy.template.cache を false に設定します。他の Groovy カスタマイズオプションについては、GroovyTemplateAutoConfiguration [GitHub] (英語) を参照してください。
高速アプリケーション再起動
spring-boot-devtools モジュールには、自動アプリケーション再起動のサポートが含まれています。JRebel (英語) などのテクノロジーほど高速ではありませんが、通常は「コールドスタート」よりも大幅に高速です。このドキュメントで後述する、より複雑なリロードオプションのいくつかを調査する前に、おそらく試してみるべきです。
詳細については、開発者ツールセクションを参照してください。