Spring Boot DevTools 实现热部署本质是快速重启,依赖类加载器隔离、文件监听与IDE协同,在1–3秒内完成局部刷新;需添加devtools依赖、配置IDEA自动编译、启用restart与livereload,并通过Spring Boot运行配置启动。

Spring Boot 中用 DevTools 实现热部署,本质不是“不重启”,而是“快速重启”——靠类加载器隔离 + 文件监听 + IDE 协同,在 1–3 秒内完成局部刷新,跳过完整启动流程。关键不在加依赖,而在打通 IDE 编译与 DevTools 的联动。
添加 devtools 依赖(基础前提)
在 pom.xml 的 <dependencies> 中加入:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency>
这个配置确保:打包时自动排除、不传递到子模块、仅开发期生效。Gradle 用户则写 developmentOnly 'org.springframework.boot:spring-boot-devtools'。
配置 IDEA 自动编译(最常失效环节)
DevTools 不自己编译代码,它只监听 target/classes(或 out/production)下的字节码变化。必须让 IDEA 在你保存 Java 文件时立刻生成新 class:
立即学习“Java免费学习笔记(深入)”;
- 打开 File → Settings → Build, Execution, Deployment → Compiler,勾选 Build project automatically
- 再进入 File → Settings → Advanced Settings → Compiler,勾选 Allow auto-make to start even if developed application is currently running
- 重启 IDEA 生效(部分版本需重启)
开启后,改完 Controller 或 Service,Ctrl+S 保存 → IDE 自动编译 → DevTools 感知变化 → 触发重启。无需手动 Ctrl+F9。
优化重启体验与资源热更新
默认行为已可用,但加几行配置能让反馈更准、更快:
- 在
application-dev.yml或application-local.yml中添加:
spring:
devtools:
restart:
enabled: true
exclude: "static/**,public/**,templates/**"
poll-interval: 1000
quiet-period: 400
livereload:
enabled: true
-
exclude避免静态资源修改触发重启(它们走 live reload) -
livereload: enabled配合浏览器插件(如 Live Server),HTML/CSS/JS 修改后自动刷新页面 - 模板引擎如 Thymeleaf 还需加
spring.thymeleaf.cache=false,否则 HTML 修改不生效
验证与注意事项
启动方式决定是否生效:
- ✅ 必须用 IDEA 的 Spring Boot 运行配置 启动(右上角绿色三角形,类型为 Spring Boot)
- ❌ 不要用
java -jar xxx.jar或普通 Application 启动 —— DevTools 不会激活 - ✅ Maven 插件建议加
<fork>true</fork>(尤其在某些 JDK 版本下避免类加载冲突) - ⚠️ 修改
@Configuration类、新增 Bean、改包结构等仍需完整重启;方法体内部修改可被 JVM HotSwap 支持(IDEA 调试中按小锤子即可)
DevTools 是开发阶段的加速器,上线前它自动失效,完全不影响生产环境。


















