使用Spring Boot DevTools快速重启功能

背景

在Spring Boot项目中,修改一些简单的代码后,每次手动终止并启动整个项目比较繁琐且消耗时间。Spring Boot DevTools 提供了开发时的热重启功能,使得在开发过程中修改代码后可以快速生效,而无需手动重启整个应用,可以大幅减少重启时间。

Spring Boot DevTools:这是Spring Boot提供的开发工具,它能够监控类路径上的变化,并自动重启应用。但请注意,它并不是真正的热部署(即不需要任何重启),而是通过快速重启(Restart)来加载更改。它使用两个类加载器来实现快速重启,对于静态资源和模板文件的更改,只需要刷新浏览器即可看到变化。

配置步骤:

  1. 添加依赖到 pom.xml:
xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <scope>runtime</scope>
    <optional>true</optional>
</dependency>
  1. 在 IDEA 中开启自动编译:
  • 打开设置 → Build, Execution, Deployment → Compiler
  • 勾选 "Build project automatically"
  1. 开启 IDEA 的自动编译支持:
  • 按 Ctrl+Shift+Alt+/ (Windows) 或 Cmd+Shift+Option+/ (Mac)
  • 选择 "Registry"
  • 勾选 "compiler.automake.allow.when.app.running"

注意:

新版 IntelliJ IDEA(2021.2 以后)里把compiler.automake.allow.when.app.running 这个选项从 Registry 移到了 Advanced Settings,所以当 Ctrl + Shift + Alt + / 打开 Registry 时搜不到就按一下做法:

(1)打开 Settings / Preferences

  • Windows:File → Settings
  • macOS:IntelliJ IDEA → Preferences
    (2)左侧菜单选择 Advanced Settings(在最下面)
    (3)在右侧找到Allow auto-make to start even if developed application is currently running,把它勾上即可
  1. 应用配置
    在 application.yml 或 application.properties 中:
yaml 复制代码
spring:
  devtools:
    restart:
      enabled: true # 启用热重启
      additional-exclude: static/**  # 静态资源更改不触发重启
  thymeleaf:
    cache: false  # 禁用模板缓存

启动一次应用

以后在 IDE 里 Ctrl+S 保存代码,Devtools 会监听 classpath 变化 → 自动重启(Restart 是秒级,比冷启动快很多)。

注意

• 静态资源(html、css、js)默认不会触发重启,而是直接刷新浏览器。

• 如果改的是 application.yml 或 pom.xml,需要手动重启。

相关推荐
starzy19903 分钟前
Scala Array操作:从定长数组到ArrayBuffer的完整指南
开发语言·后端·scala
IT_陈寒4 分钟前
Python项目实战经验分享:为什么你的多进程日志会丢失?
前端·人工智能·后端
若亦_5 分钟前
排序>>交换排序
java·数据结构·算法
Wang's Blog10 分钟前
MongoDB 地理位置上报实战:从接口设计到覆盖写入的完整实现
java·交友
鬼手点金28 分钟前
Skills:领域能力的可组合单元
java·人工智能·笔记·自动化·1024程序员节
中二少年学编程30 分钟前
Node版本管理使用手册
后端
modelmd32 分钟前
Go 切片、映射常见使用场景
开发语言·后端·golang
mldong1 小时前
工作流引擎的退回修改:金额从 6666 改成 666,重提还是回到退回它的那个人
后端·架构
陈随易1 小时前
一个网吧网管,做了个网页,卖了 5000 万
前端·后端·程序员
captain3769 小时前
MyBatis(入门5)其他查询操作
java·数据库·spring boot·mybatis