依賴:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
optional=true, 依賴不會傳遞, 該項目依賴devtools;之後依賴boot項目的項目如果想要使用devtools, 需要重新引入。
application.properties配置:
#熱部署生效 spring.devtools.restart.enabled=true #設置重啓的目錄,添加那個目錄的文件需要restart spring.devtools.restart.additional-paths=src/main/java
devtools會監聽classpath下的文件變動,並且會立即重啓應用(發生在保存時機) 因爲其採用的虛擬機機制,該項重啓是很快的 (1)base classloader (Base類加載器):加載不改變的Class,例如:第三方提供的jar包。 (2)restart classloader(Restart類加載器):加載正在開發的Class。 爲什麼重啓很快,因爲重啓的時候只是加載了在開發的Class,沒有重新加載第三方的jar包。
intelli idea配置devtool自動重啓後,代碼不生效的解決方法:
修改了java類後,IDEA默認是不自動編譯的,而spring-boot-devtools又是監測classpath下的文件發生變化纔會重啓應用,所以需要設置IDEA的自動編譯:
(1)File-Settings-Compiler-Build Project automatically
(2)ctrl + shift + alt + /,選擇Registry,勾上 Compiler autoMake allow when app running