ホットスワップ
Spring Boot はホットスワップをサポートしています。このセクションでは、その仕組みに関する質問に回答します。
静的コンテンツをリロードする
ホットリロードにはいくつかのオプションがあります。推奨されるアプローチは、spring-boot-devtools
を使用することです。これは、アプリケーションの高速再起動や LiveReload のサポートなどの追加の開発時機能や、実用的な開発時構成 (テンプレートキャッシュなど) を提供するためです。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 (英語) などのテクノロジーほど高速ではありませんが、通常は「コールドスタート」よりも大幅に高速です。このドキュメントで後述する、より複雑なリロードオプションのいくつかを調査する前に、おそらく試してみるべきです。
詳細については、開発者ツールセクションを参照してください。