当前位置: 首页 > news >正文

springboot-Spring Boot DevTools工具的使用

概述: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。
http://www.dtcms.com/a/98598.html

相关文章:

  • VSCODE npm: 因为在此系统上禁止运行脚本。有关详细信息,请参阅 ...
  • 浏览器 ➔ 服务器or服务器 ➔ 浏览器:
  • 第二卷:海盐城血战(37-72回)正反人物群像
  • 第一篇:系统分析师首篇
  • DFS飞机降落
  • 《HelloGitHub》第 108 期
  • AUTOSAR_StbM_详解
  • 浅谈Thread类及常见方法与线程的状态(多线程编程篇2)
  • fetch`的语法规则及常见用法
  • Document对象的常用属性和方法
  • 蓝桥杯[每日一题] 真题:管道(java版)
  • tryhackme——Windows Local Persistence
  • std::reference_wrapper 和 std::function的详细介绍
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part13
  • 【QT】QT样式设计
  • openwrt24.10.0版本上安装istoreOS的屏幕监控插件
  • CentOS 安装 zip
  • 零基础入门多媒体音频(4)-GENIVIProjectAudioManager总览
  • gdb 调试mysql
  • vue3源码分析 -- watch
  • MVC 文件夹:架构之美,开发之魂
  • 从零开始跑通3DGS教程:(三)坐标系与尺度编辑(CloudCompare)
  • HFSS 使用入门
  • 【最后203篇系列】025 FastAPI+Celery
  • AI大模型、机器学习以及AI Agent开源社区和博客
  • 数据结构与算法——顺序表之手撕OJ题
  • 在 Vue 项目中,登录成功后是否存储 token 与用户信息到本地
  • 【NTN 卫星通信】Starlink 星链卫星有多大?详解尺寸与技术参数
  • 深度学习Note.5(机器学习.6)
  • 神经网络检测题