IntelliJ IDEA Spring boot devtools 實現熱部署
一、spring-boot-devtools是一個為開發者服務的一個模組,其中最重要的功能就是自動部署新程式碼。
二、原理
使用了兩個ClassLoader,一個ClassLoader用來載入那些不會變的類(如:第三方Jar包),另一個ClassLoader載入會更改的類,稱為restart ClassLoader,這樣在有程式碼更改時,原來的restart ClassLoader被丟棄,重新建立一個restart ClassLoader。如此一來,由於需要載入的類比較少,所以實現了較快的重啟。
三、發生時機
devtools會監聽classpath下的檔案變動,並會立即重啟應用
一、開啟idea自動make功能
1、CTRL + SHIFT + A --> 查詢 make project automatically --> 選中
2、CTRL + SHIFT + A --> 查詢 Registry --> 找到並勾選 compiler.automake.allow.when.app.running
重啟idea重啟idea重啟idea重啟idea重啟idea重啟idea
二、使用spring-boot-1.3開始有的熱部署功能
1、加maven依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
2、開啟熱部署
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> </configuration> </plugin> </plugins> </build>
三、Chrome禁用快取
F12(或Ctrl+Shift+J或Ctrl+Shift+I)--> NetWork --> Disable Cache(while DevTools is open)
注意:
1、如果設定SpringApplication.setRegisterShutdownHook(false),則自動重啟將不起作用。
2、這種熱載入比較全面,資原始檔、程式碼的修改都可以監聽到,但有些情況下也會有問題