Spring Boot DevTools 是一个专为提升开发效率而设计的模块,它通过提供一系列开发时工具,让你能更专注于代码本身,而不是反复重启应用或调整配置。
DevTools 是可选的,并且只在开发阶段生效,打包成生产环境的 JAR 包时会自动被排除。
在 pom.xml 中添加以下依赖:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
</dependencies><optional>true</optional>:表示这个依赖不会被传递到其他模块,避免污染项目依赖。
DevTools 的核心目标是实现“快速反馈循环”,让你修改代码后能立即看到效果。
这是 DevTools 最受欢迎的功能。当你修改了 Java 类、配置文件(如 application.properties)后,应用会自动重启,无需手动停止再启动。
工作原理:它通过两个类加载器(ClassLoader)实现。
基础类加载器 (Base ClassLoader):加载第三方库等不会变化的类。
重启类加载器 (Restart ClassLoader):加载你的业务代码。
优势:当检测到代码变更时,DevTools 只会丢弃并重新创建“重启类加载器”,而保留“基础类加载器”和 JVM 进程。这比完全重启应用要快得多。
DevTools 内置了一个 LiveReload 服务器。当你的静态资源(如 CSS、JavaScript)或模板文件(如 Thymeleaf)发生变化时,它会自动通知浏览器刷新页面。
使用方法:需要在浏览器上安装对应的 LiveReload 插件(Chrome、Firefox 等主流浏览器均支持)。
默认端口:LiveReload 服务器默认监听 35729 端口。
DevTools 会自动为你调整一些不利于开发的默认设置,让你无需手动配置。
禁用模板缓存:自动关闭 Thymeleaf、FreeMarker 等模板引擎的缓存,确保你修改的页面能立即生效。
开启调试日志:自动开启 Web 相关的 DEBUG 级别日志,方便你查看请求处理过程。
你可以通过配置文件来微调 DevTools 的行为。
# 启用/禁用自动重启
spring.devtools.restart.enabled=true
# 排除特定路径,修改这些路径下的文件不会触发重启
spring.devtools.restart.exclude=static/**,public/**
# 添加额外的监控路径
spring.devtools.restart.additional-paths=src/main/resources/templates
# 启用/禁用 LiveReload
spring.devtools.livereload.enabled=true最常见的原因是 IDE 没有开启自动编译。DevTools 依赖编译后的 .class 文件变化来触发重启。
IntelliJ IDEA 配置:
打开设置:File → Settings → Build, Execution, Deployment → Compiler。
勾选 Build project automatically。
按下 Ctrl + Shift + Alt + / (Windows) 或 Cmd + Shift + Option + / (macOS) 打开注册表,找到并勾选 compiler.automake.allow.when.app.running。
完成以上配置后,当你保存并编译代码时,DevTools 就会自动检测到变化并重启应用了。