Spring Boot 热部署核心是 spring-boot-devtools,依赖类加载器隔离、文件监听和 IDE 协同:添加依赖并配置 IDEA 自动编译后,代码保存 1–3 秒自动重启,静态资源与模板修改实时生效,无需手动重启。

Spring Boot 中实现热部署开发,核心是用好 spring-boot-devtools——它不是“一键 magic”,而是靠类加载隔离 + 文件监听 + IDE 协同完成的高效反馈闭环:改完代码保存,1–3 秒内自动刷新效果,彻底跳过手动停、编译、启动、等待、刷新的老流程。
添加 DevTools 依赖(必须)
在 pom.xml 的 <dependencies> 中加入:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>
注意:optional=true 可防止该依赖传递到其他模块;打包时会自动排除,不影响生产环境。
IDEA 关键设置(常被忽略)
DevTools 不自己编译代码,它依赖 IDE 输出的 .class 文件变化来触发重启。IntelliJ IDEA 必须开启两项:
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
-
Build project automatically:路径为
File → Settings → Build, Execution, Deployment → Compiler -
Allow auto-make when application is running:路径为
File → Settings → Advanced Settings → Compiler
开启后,你保存 Java 文件,IDE 自动编译生成新字节码,DevTools 立即感知并重启——无需 Ctrl+F9 手动触发。
静态资源与模板实时生效
HTML/CSS/JS 和 Thymeleaf/Freemarker 模板修改后,无需重启即可刷新看到效果,但需满足:
- 静态资源放在
src/main/resources/static或src/main/resources/templates - 关闭模板缓存:
spring.thymeleaf.cache=false(Thymeleaf)或spring.freemarker.cache=false(Freemarker)
DevTools 默认已禁用这些缓存,但如果项目中显式配置了 true,需手动覆盖为 false。
按需优化重启行为
默认监控整个 classpath,但有些目录变更不需重启(如文档、脚本)。可通过 application.properties 调整:
- 跳过指定路径:
spring.devtools.restart.exclude=static/**,config/** - 追加排除规则(保留默认):
spring.devtools.restart.additional-exclude=logback.xml - 只监控特定路径:
spring.devtools.restart.poll-interval=2000(单位毫秒,控制扫描频率)

















