SpringBoot專案熱部署

專注的阿熊發表於2020-01-10

個人使用了的感覺,太慢了,這邊改好了後要等好一會專案才能自動編譯,不知道是不是我專案龐大的原因。


我是使用的spring-boot-devtools進行熱部署,它只支援spring-boot專案。新增依賴


<!--熱部署-->

<!-- devtools可以實現頁面熱部署(即頁面修改後會立即生效,

這個可以直接在application.properties檔案中配置spring.thymeleaf.cache=false來實現) -->

<!--實現類檔案熱部署(類檔案修改後不會立即生效),實現對屬性檔案的熱部署。-->

<!--即devtools 會監聽classpath下的檔案變動,並且會立即重啟應用(發生在儲存時機),

    注意:因為其採用的虛擬機器機制,該項重啟是很快的-->

<!-- (1) base classloader (Base類載入器) :載入不改變的Class,例如:第三方提供的jar包。-->

<!-- (2) restart classloader (Restart類 載入器) :載入正在開發的Class。-->

<!--為什麼重啟很快,因為重啟的時候只是載入了在開發的Class,沒有重新載入第三方的jar包。-->

<dependency>

    <groupId>org.springframework.boot</groupId>

    <artifactId>spring-boot-devtools</artifactId>

    <!-- optional-true, 依賴不會傳遞,該專案依賴devtools;

    之後依賴boot專案的專案如果想要使用devtools,需要重新引入-->

    <optional>true</optional>

</dependency>

配置檔案新增


#熱部署生效

spring.devtools.restart.enabled=true

#設定重啟的目錄,新增那個目錄的檔案需要restart

spring.devtools.restart.additional-paths=src/main/java

啟動後沒有反應,原因是它是基於類載入機制來實現熱載入的,因此你修改完成程式碼後必須重新編譯當前程式碼,才能觸發熱部署,Eclipse預設就支援了自動編譯,而在Intellij IDEA中預設是關閉了自動編譯的,所以先必須先把它開啟:


1、IDEA開啟專案自動編譯,進入設定,Build,Execut, Deployment -> Compiler 勾選中左側的Build Project automatically


2、IDEA開啟專案執行時自動make, ctrl + shift + a搜尋命令:registry -> 勾選compiler.automake.allow.when.app.running           注:可能會ctrl + shift + a 變成了截圖功能,我就是釘釘的截圖熱鍵導致的,關掉它!


 


附:下面方法我沒有檢驗 IDEA配置熱部署

Swift Code


1、修改伺服器配置,使得IDEA視窗失去焦點時,更新類和資源

    選單Run->EditConfiguration , 然後配置指定伺服器下,右側server標籤下on frame deactivation = Update classes and         resource。

    優點:簡單

    缺點:基於JVM提供的熱載入僅支援方法塊內程式碼修改,只有debug模式下,並且是在idea失去焦點時才會出發熱載入,相對載入速度緩慢


2、使用springloaded jar包

    a. 下載jar包,github:

    b. 啟動應用時新增VM啟動引數:-javaagent:/home/lkqm/.m2/repository/org/springframework/springloaded/1.2.7.RELEASE/springloaded-1.2.7.RELEASE.jar -    noverify

    優點:對Spring系列框架支援好(不含Spring boot), 支援 成員級別的修改(增刪改方法、欄位、註解),支援對列舉值集。

    缺點:與優點相對


3、使用Jrebel外掛實現熱部署(該外掛14天免費試用)

    線上安裝:選單File -> Setting -> Plugin, 點選右側底部 Browse repositories, 彈出框頂部輸入:JReble for Intellij, 選中安裝即可。

    優點:強大,對各類框架支援,並且提供IDE外掛的方式。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2672876/,如需轉載,請註明出處,否則將追究法律責任。

相關文章