springboot-Spring Boot DevTools工具的使用

发布于:2025-03-30 ⋅ 阅读:(24) ⋅ 点赞:(0)

概述: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)后,浏览器自动刷新。
  • 配置
  1. 添加 DevTools 依赖(同上)。
  2. 浏览器安装 LiveReload 插件(如 Chrome 的 livereload 扩展)。
  3. 启动应用时,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

注意事项

  1. 生产环境禁用:DevTools 会增加内存消耗和安全风险,生产环境需移除依赖。
  2. 性能优化:排除大型资源(如 node_modules)可提升重启速度。
  3. 兼容性:与 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 选项。

注意事项与常见问题

  1. 性能影响

    • 自动编译会增加 IDE 内存消耗,大型项目建议调整 JVM 内存参数(如 -Xmx4g)。
    • 若编译速度明显下降,可尝试降低 Shared build process heap size(路径:Build, Execution, Deployment > Compiler)4。
  2. 版本兼容性

    • 2021.2 及以上版本:新增 Allow auto-make to start even if the development application is currently running 选项,可直接在 Compiler 设置中勾选,无需修改注册表。
    • 旧版本:必须通过注册表启用 compiler.automake.allow.when.app.running
  3. 排除特定文件

    • 在 Resource patterns 中配置正则表达式,跳过非代码文件(如 *.md*.txt)4。