Spring Boot DevTools 通过分离类加载实现快速重启而非真正热加载;需添加optional依赖、启用IDEA自动编译与fork模式、配置重启与LiveReload参数,并仅支持Spring Boot运行配置启动。

Spring Boot DevTools 不是真正意义上的“不重启热加载”,而是通过智能类加载机制实现快速重启,效果接近热加载。它把不变的类(如第三方 Jar)和可变的类(如你写的 Controller、Service)分开加载,改完代码后只丢弃并重建负责业务类的那个 ClassLoader,所以启动快、体验顺。
添加 devtools 依赖
在 pom.xml 中加入以下依赖(注意 <optional>true</optional>,避免被其他模块传递依赖):
- 确保使用
runtime或默认 scope,不要用test - Maven 插件需启用 fork:在
spring-boot-maven-plugin配置中设置<fork>true</fork>,否则 DevTools 无法生效
IDEA 必须开启自动编译
DevTools 监听的是 classes 目录下的字节码变化,不是源码。所以必须让 IDEA 在保存时自动编译 Java 文件:
- 打开 Settings → Build, Execution, Deployment → Compiler,勾选 Build project automatically
- 按
Ctrl+Alt+Shift+/(Windows/Linux)或Cmd+Option+Shift+/(macOS)调出 Registry,启用 compiler.automake.allow.when.app.running - 重启 IDEA 生效(部分版本需重启)
配置文件启用重启与 LiveReload
在 application-dev.yml 或 application-local.yml 中添加:
-
spring.devtools.restart.enabled: true(默认已开启,显式写更清晰) -
spring.devtools.livereload.enabled: true(启用内嵌 LiveReload 服务器) -
spring.devtools.restart.poll-interval: 1000和quiet-period: 400可微调监听灵敏度,避免频繁触发 - 静态资源(
/static、/templates等)修改默认不重启,而是触发浏览器自动刷新——前提是页面引入了 LiveReload 脚本(DevTools 自动注入)
运行方式有讲究
必须用 IDEA 的 Spring Boot 运行配置 启动,不能打成 jar 再运行,也不能用普通 Application 启动:
- Run Configuration 类型选 Spring Boot,Main class 是你自己的启动类(如
Application.java) - 确认 VM options 没有禁用 DevTools(比如没加
-Dspring.devtools.restart.enabled=false) - 如果使用远程开发模式,还需配置
spring.devtools.remote.secret并启用 RemoteSpringApplication


















