一、Spring Boot 启动热部署
Spring Boot 启动“热部署(Hot Deployment)”,可以让你在不重启项目的情况下快速看到代码变更的效果(特别是前后端调试阶段)。
1-1、什么是热部署?
热部署是指:
修改 Java 或模板(如 HTML、Thymeleaf)代码后,无需手动重启服务,Spring Boot 能自动感知并重新加载类或资源,节省重启时间,提高开发效率。
热部署的过程:
1、重启(restart):自定义开发的代码,包括:页面,类,配置文件......,加载位置restart类加载器;
2、重载(reload):jar包(基本不会有变化),加载位置base类加载器
热部署,仅仅代码restart过程,而程序第一次启动的时候,既有restart过程,又有reload过程。
1-2、常用热部署方式
Spring Boot 推荐使用的热部署工具是 Spring Boot DevTools。
1-3、使用 Spring Boot DevTools 实现热部署
1. 添加依赖:开启开发者工具
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope> <!-- 只在开发环境有效 -->
<optional>true</optional> <!-- 可选依赖,防止被打包进生产环境 -->
</dependency>
2. IDE 设置:激活热部署
Spring Boot DevTools 默认基于 类文件变更触发重启,因此你需要确保:
(1). 启用了自动构建:
File → Settings → Build, Execution, Deployment → Compiler
勾选:✔️
Build project automatically
(2). 让 IntelliJ 在修改文件后自动编译:
Advanced Settings :✔️ “Allow auto-make to start even if developed application is currently running”
这样只要你保存了 Java 文件,IDE 就会自动编译触发 DevTools 热部署。
此时,页面发生了变化,不会参加热部署。
设置不参与热部署的文件/文件夹:
1-4、DevTools 热部署行为总结
变更内容 | 是否自动热部署 | 说明 |
---|---|---|
Java 类(Controller, Service) | ✅ 是 | 自动重新加载 |
静态资源(HTML, CSS, JS) | ✅ 是 | 即时刷新页面 |
配置文件(application.properties) | ❌ 否 | 需要重启才能生效 |
引入新依赖 | ❌ 否 | 需要 重新启动项目 |