SpringBoot專案的熱部署 idea
熱部署可以使修改程式碼後,無須重啟伺服器,就可以載入更改的程式碼。
第1種:修改伺服器配置,使得IDEA視窗失去焦點時,更新類和資源
選單Run->EditConfiguration,然後配置指定的伺服器下,右側server標籤下on frame deactivation=Update classes and resource.
缺點:基於JVM提供的熱載入僅支援方法塊程式碼修改,只有debug模式下,並且是在idea失去焦點時才會觸發熱載入,相對載入速度緩慢。
第2種:使用springloaded jar包
啟動應用時新增JVM啟動引數:
-javaagent:/home/lkqm/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -noverify
支援成員級別的修改,支援對列舉的修改。
第3種:使用spring-boot-devtools提供的開發者工具
在pom中加入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
將依賴標記為optional可以防止將devtools依賴傳遞到其他模組中。
第4種:使用Jrebel外掛
最後3種方法是基於類載入機制實現載入的,因此你修改完程式碼後必須重新編譯當前程式碼,才能觸發熱部署,Eclipse預設就支援自動編譯,而在IDea中預設是關閉的,設定以下兩項設定開啟:
(1)“File"->"Settings"->"Build, Execution, Deplyment"->"Compiler"中勾選“build project automatically”
(2)組合鍵:shift+ctrl+alt+/: regsitry->勾選compiler.automake.allow.when.app.running.
devtools屬性預設值
Spring Boot支援的一些庫中會使用快取來提高效能,例如模板引擎將編譯後的模板,以避免重複解析模板檔案。此外,Spring MVC可以在靜態資源響應中新增HTTP快取頭。
雖然快取在生產中非常有益,但它在開發過程中可能會產生反效果,它會阻止你看到剛剛在應用程式中進行的更改。因此,spring-boot-devtools將預設禁用這些快取選項。
快取選項通常在application.properties檔案中配置,例如,Thymeleaf提供了spring.thymeleaf.cache屬性。spring-boot-devtools模組不需要手動設定這些屬性,而是自動應用合理的開發時配置。
devtools自動重啟
spring-boot-devtools會在類路徑上的檔案發生更改時自動重啟。預設情況下會監視類路徑上的所有變動,但請注意,某些資源(如靜態資源和檢視模板)不需要重啟應用程式。
1.排除資源
某些資源在更儘管時不一定需要觸發重啟。例如,可以直接編輯Thymeleaf模板。預設情況下,更改/META-INF/maven,/META-INF/resources, /resources, /static, /public或/templates中的資源不會觸發重啟,但會觸發實時重新載入。如果要自定義這些排除項,可以使用spring.devtools.restart.exclude屬性。例如,要僅排除/static和/public你將設定以下內容
spring.devtools.restart.exclude = static / **,public / **
如果你想保留上面的預設(情況下的)值並新增其他的排除項,你可以使用
spring.devtools.restart.additional-exclude 屬性。
2.監控額外的路徑
當你對不在類路徑中的檔案進行更改時,可能需要重啟或重新載入應用程式。為此,請使用spring.dev.tools.restart.additional-paths屬性來配置監視其他路徑的更改。
3.禁用重啟
可以使用spring.devtools.restart.enabled屬性來禁用它。
最後歡迎大家訪問我的個人網站:1024s