概述:Spring Boot DevTools 是 Spring Boot 提供的一组开发工具,用于提升开发效率
核心功能
1、自动重启(Automatic Restart)
- 作用:代码修改后自动重启应用,无需手动重启。
- 配置:
<!-- 添加依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
- 原理:使用
Spring Boot DevTools
的RestartClassLoader
监控类路径变化。 - 注意事项:
排除不需要重启的资源(如 Maven
依赖):
spring.devtools.restart.exclude=static/**,public/**
生产环境需禁用(默认自动禁用)
2、 LiveReload(实时刷新)
- 作用:修改前端资源(HTML/CSS/JS)后,浏览器自动刷新。
- 配置:
- 添加 DevTools 依赖(同上)。
- 浏览器安装 LiveReload 插件(如 Chrome 的
livereload
扩展)。 - 启动应用时,DevTools 会自动启用 LiveReload 服务器。
3、全局设置(Global Settings)
# application.properties
spring.devtools.livereload.enabled=true # 启用 LiveReload
spring.devtools.restart.enabled=true # 启用自动重启
spring.devtools.remote.secret=mysecret # 远程调试密钥(可选)
4、缓存禁用(Cache Disabling)
# Thymeleaf 缓存禁用
spring.thymeleaf.cache=false
# FreeMarker 缓存禁用
spring.freemarker.cache=false
# 静态资源缓存禁用
spring.resources.cache-period=0
5、远程调试(Remote Debugging)
- 场景:在远程服务器上使用 DevTools 进行调试。
- 配置:
spring.devtools.remote.enabled=true
spring.devtools.remote.secret=mysecret # 安全密钥
- 启动命令:
java -jar -Dspring.devtools.remote.secret=mysecret your-app.jar
常用快捷键
- 触发重启:按
Ctrl + F9
(IntelliJ IDEA 默认)。 - 快速编译:
Build > Recompile
或Ctrl + Shift + F9
。
注意事项
- 生产环境禁用:DevTools 会增加内存消耗和安全风险,生产环境需移除依赖。
- 性能优化:排除大型资源(如
node_modules
)可提升重启速度。 - 兼容性:与
JRebel
等工具可能存在冲突,建议单独使用。
基本使用
1、pom.xml引入依赖
<!-- Spring Boot DevTools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
2、在 application.properties 中添加了 DevTools 的配置
# 启用热部署
spring.devtools.restart.enabled=true
# 设置重启的目录
spring.devtools.restart.additional-paths=src/main/java
# 设置classpath目录下的WEB-INF文件夹内容修改不重启
spring.devtools.restart.exclude=WEB-INF/**
# 页面热加载
spring.thymeleaf.cache=false
# 设置重启的目录
spring.devtools.restart.additional-exclude=WEB-INF/**
# 自定义重启类加载器
spring.devtools.restart.classloader.ignore=WEB-INF/**
这些配置提供了以下功能:
1. 自动重启:当你修改代码时,应用会自动重启
2. 实时重载:静态资源(如 HTML、CSS、JavaScript)的修改会立即生效,无需重启
3. 排除目录:某些目录的修改不会触发重启
4. 热加载:模板文件的修改会立即生效
使用说明:
1. 当你修改 Java 代码时,应用会自动重启
2. 当你修改静态资源时,浏览器刷新即可看到更改
3. 如果你使用的是 IDE(如 IntelliJ IDEA),建议开启自动编译功能
注意事项:
1. 确保你的 IDE 开启了自动编译功能
2. 如果使用 IntelliJ IDEA,建议在设置中开启 "Build project automatically"
进入 Build, Execution, Deployment
> Compiler,
勾选 Build project automatically
选项(默认未启用)
若需在应用运行时(如调试阶段)自动编译代码,需额外配置:
打开 IDE 注册表
- 按下
Ctrl + Shift + A
,输入registry
并回车。 - 找到并勾选
compiler.automake.allow.when.app.running
选项。
注意事项与常见问题
性能影响
- 自动编译会增加 IDE 内存消耗,大型项目建议调整 JVM 内存参数(如
-Xmx4g
)。 - 若编译速度明显下降,可尝试降低
Shared build process heap size
(路径:Build, Execution, Deployment
>Compiler
)4。
- 自动编译会增加 IDE 内存消耗,大型项目建议调整 JVM 内存参数(如
版本兼容性
- 2021.2 及以上版本:新增
Allow auto-make to start even if the development application is currently running
选项,可直接在 Compiler 设置中勾选,无需修改注册表。 - 旧版本:必须通过注册表启用
compiler.automake.allow.when.app.running
。
- 2021.2 及以上版本:新增
排除特定文件
- 在
Resource patterns
中配置正则表达式,跳过非代码文件(如*.md
、*.txt
)4。
- 在