IDEA下Springboot熱部署

目前的Springboot,當發生了任何修改之後,必須關閉後再啓動Application類才能夠生效,顯得略微麻煩。 Springboot提供了熱部署的方式,當發現任何類發生了改變,馬上通過JVM類加載的方式,加載最新的類到虛擬機中。 這樣就不需要重新啓動也能看到修改後的效果了

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 這個需要爲 true 熱部署纔有效 -->
</dependency>

插件:(這個一般建立springboot項目就會有)

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>

IDEA配置
當我們修改了Java類後,IDEA默認是不自動編譯的(和elicpse不同),而spring-boot-devtools又是監測classpath下的文件發生變化纔會重啓應用,所以需要設置IDEA的自動編譯:

(1)File->Settings ->Build, Execution, Deployment
在這裏插入圖片描述
(2)ctrl + shift + alt + /,選擇Registry,勾上 Compiler autoMake allow when app running
在這裏插入圖片描述
修改類–>保存:應用會重啓
修改配置文件–>保存:應用會重啓
修改頁面–>保存:應用不會重啓,但會重新加載,頁面會刷新

關於devtools原理

深層原理是使用了兩個ClassLoader,一個Classloader加載那些不會改變的類(第三方Jar包),另一個ClassLoader加載會更改的類,稱爲restart ClassLoader,這樣在有代碼更改的時候,原來的restart ClassLoader 被丟棄,重新創建一個restart ClassLoader,由於需要加載的類相比較少,所以實現了較快的重啓時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章