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目录下面