ホットスワップ

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 (英語) などのテクノロジーほど高速ではありませんが、通常は「コールドスタート」よりも大幅に高速です。このドキュメントで後述する、より複雑なリロードオプションのいくつかを調査する前に、おそらく試してみるべきです。

詳細については、開発者ツールセクションを参照してください。

コンテナーを再起動せずに Java クラスをリロードする

多くの最新の IDE(Eclipse、IntelliJ IDEA など)はバイトコードのホットスワップをサポートしています。そのため、クラスやメソッドのシグネチャーに影響を与えない変更を加えた場合、副作用なくクリーンにリロードされるはずです。