SpringBoot應用的熱部署:
除了使用JRebel來實現熱部署,還可以使用Springboot提供的spring-boot-devtools包來完成SpringBoot應用熱部署;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
IDEA按CTRL+F9編譯後就會進行熱部署
1)原理:
SpringBoot重啓是reload重啓,通過監控classpath的變化,如果classpath中的文件發生變化,即觸發重啓。SpringBoot通過兩個classpath來完成reload,一個basic classloader中加載不變的類,一個restart classloader中加載classpath中的類,重啓的時候,restart classloader中的類丟棄並重新加載;
2)排除資源:
spring.devtools.restart.exclude=static/**,templates/** (在靜態資源中也要按CTRL+F9編譯後才能進行熱部署,雖然不會重啓)
spring.devtools.restart.additional-exclude=public/** (處理默認配置排除之外的)
spring.devtools.restart.enabled=false (禁用自動重啓)
3)可以使用triggerfile的重啓策略:
spring.devtools.restart.triggerFile=trigger.file
注意這個文件不要放到default_excludes目錄下面