0.参考其他文章
- Spring Boot之Spring-devtools热部署:实现快速开发与调试-阿里云开发者社区
- 关于IDEA2022开启热部署没有compiler.automake.allow.when.app.running的解决方案-CSDN博客
1. Spring DevTools简介
Spring DevTools是Spring团队开发的一个模块,旨在提供开发时的快速迭代和调试支持。它包含以下主要功能:
- 热部署: 在代码更改后,自动重新加载应用上下文,使更改立即生效。
- 内嵌服务器支持: 支持内嵌服务器(如Tomcat)的快速重启。
- 全局配置文件热加载: 允许在不重启应用的情况下更新全局配置文件。
- 禁用特定缓存: 可以选择性地禁用特定的缓存,以便更快地看到代码更改的效果。
在代码更改后,自动重新加载应用上下文,使更改立即生效。
2.本地idea开发时,如何集成热部署?
2.1 引入依赖

2.2 开启idea配置


注意了哈,上图这块设置allow这个, 可能因idea版本不同而有所改变,有些idea版本需要用下面这种方法

2.3 配置yml文件(可不配置,则会使用默认值)

2.4 当上面3步做好之后,我们可以启动我们的本地项目,然后调用接口


然后再修改接口响应,再等待几秒(热部署需要扫描检测文件改动,然后重新启动项目(部分重新启动,观察日志可看到))

然后再次请求接口 就发现成功改变了响应结果

3.生产环境触发热部署
TODO 文章待完善:
既然热部署功能使用依赖于idea配置,那么生产环境如何触发呢,即使能触发,我该如何验证呢?因为生产环境运行的是jar包啊
4.热部署引用前后,spring打印日志区别
热部署前核心线程名字叫做main,热部署集成后核心线程名字叫做restartedMain
