熱抽換

Spring Boot 支援熱抽換。本節回答關於其運作方式的問題。

重新載入靜態內容

熱重新載入有多種選項。建議的方法是使用 spring-boot-devtools,因為它提供了額外的開發時期功能,例如支援快速應用程式重新啟動和 LiveReload,以及合理的開發時期組態(例如範本快取)。Devtools 透過監控類別路徑的變更來運作。這表示必須「建置」靜態資源變更,變更才會生效。預設情況下,當您儲存變更時,這會在 Eclipse 中自動發生。在 IntelliJ IDEA 中,「Make Project」命令會觸發必要的建置。由於預設的重新啟動排除,對靜態資源的變更不會觸發應用程式重新啟動。但是,它們會觸發即時重新載入。

或者,在 IDE 中執行(尤其是在開啟偵錯的情況下)是進行開發的好方法(所有現代 IDE 都允許重新載入靜態資源,通常也允許 Java 類別變更的熱抽換)。

最後,可以組態 Maven 和 Gradle 外掛程式(請參閱 addResources 屬性)以支援從命令列執行,並直接從來源重新載入靜態檔案。如果您使用更進階的工具編寫該程式碼,則可以將其與外部 css/js 編譯器程序一起使用。

重新載入範本而不重新啟動容器

Spring Boot 支援的大多數範本技術都包含停用快取的組態選項(稍後將在本文檔中說明)。如果您使用 spring-boot-devtools 模組,則這些屬性會在開發時期為您自動組態

Thymeleaf 範本

如果您使用 Thymeleaf,請將 spring.thymeleaf.cache 設定為 false。 有關其他 Thymeleaf 自訂選項,請參閱 ThymeleafAutoConfiguration

FreeMarker 範本

如果您使用 FreeMarker,請將 spring.freemarker.cache 設定為 false。 有關其他 FreeMarker 自訂選項,請參閱 FreeMarkerAutoConfiguration

Groovy 範本

如果您使用 Groovy 範本,請將 spring.groovy.template.cache 設定為 false。 有關其他 Groovy 自訂選項,請參閱 GroovyTemplateAutoConfiguration

快速應用程式重新啟動

spring-boot-devtools 模組包含對自動應用程式重新啟動的支援。雖然不如 JRebel 等技術快,但通常明顯快於「冷啟動」。在研究本文檔稍後討論的更複雜的重新載入選項之前,您應該先試試看。

如需更多詳細資訊,請參閱開發人員工具章節。

重新載入 Java 類別而不重新啟動容器

許多現代 IDE(Eclipse、IDEA 和其他 IDE)都支援位元組碼的熱抽換。因此,如果您進行的變更不影響類別或方法簽章,則應乾淨地重新載入,而不會產生副作用。