springboot热部署
热部署介绍
程序改了,重启服务器就是冷启动,服务器自动把更新的部分重新加载一遍就是热部署,类似于平常听到的热补丁的概念
1.自动热部署
1.1 热部署的功能springboot已经做好了,先在 pom.xml 文件中导入 devtoots 坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
1.2 在 Settings 里勾选 Build project automatically
1.3 勾选允许应用运行时自动构建
这时候就可以完成啦,不过值得注意的是,springboot开发者认为开发人员在程序自动构建后需要到别的地方测试功能,所以需要切换到任意界面5s后才会热部署。
2.配置不参与热部署的目录
springboot默认以下目录不参与热部署
- /META-INF/maven
- /META-INF/resources
- /resources
- /static
- /public
- /templates
也可以手动配置不参与热部署的目录
spring:
devtools:
restart:
# 设置不参与热部署的文件或文件夹
exclude: static/**,public/**,config/application.yml
3.关闭热部署
线上运行是不可能使用热部署的,所以需要关闭此功能,配置如下
spring:
devtools:
restart:
enabled: false
更高的层级关闭
@SpringBootApplication
public class SSMPApplication {
public static void main(String[] args) {
System.setProperty("spring.devtools.restart.enabled","false");
SpringApplication.run(SSMPApplication.class);
}
}
这里的更高等级指的是springboot有一个配置的等级,具体如下,越往下等级越高,高等级会覆盖掉低等级的配置
参考: link
4.总结
热部署功能是一个典型的开发阶段使用的功能,在线上运行时没有意义,因为线上运行时不会修改代码。具体实现只需要引用devtools依赖,然后开启自动部署就可以了。对于开发人员来说是一个相当方便的功能。