参考文章 https://longsheng.org/post/20359.html
IntelliJ IDEA 热部署教程
📚 什么是热部署?
热部署(Hot Reload/Hot Swap)是指在应用运行过程中,修改代码后无需重启应用,就能让修改立即生效的功能。这样可以大大提高开发效率,节省重启应用的时间。
✅ 项目已配置
你的项目已经配置了 Spring Boot DevTools,这是实现热部署的基础工具。在 pom.xml 中可以看到:
|
|
🚀 配置步骤
方法一:自动热部署(推荐)
1. 开启 IDEA 自动编译
-
打开 IDEA 设置:
- Windows/Linux:
File→Settings(或按Ctrl + Alt + S) - Mac:
IntelliJ IDEA→Preferences(或按Cmd + ,)
- Windows/Linux:
-
找到编译设置:
- 导航到:
Build, Execution, Deployment→Compiler - ✅ 勾选
Build project automatically(自动构建项目)
💡 说明:勾选后,当你保存文件(
Ctrl + S)时,IDEA 会自动编译这个文件,生成新的.class文件。但这只是编译,不会自动更新到运行中的应用。 - 导航到:
-
开启运行时自动编译:
- 按
Ctrl + Shift + A(Mac:Cmd + Shift + A) 打开快速搜索 - 输入
Registry并打开 - 找到并勾选
compiler.automake.allow.when.app.running
💡 说明:这个选项允许在应用运行时进行自动编译。配合下面的运行配置,才能实现完整的热部署。
- 按
2. 配置运行方式
-
运行应用:
- 点击右上角的运行配置下拉菜单
- 选择
Edit Configurations...
-
配置更新策略:
- 在
On 'Update' action下拉框中选择:Update classes and resources - 在
On frame deactivation下拉框中选择:Update classes and resources
💡 完整流程:
- 你修改代码并保存(
Ctrl + S) - IDEA 自动编译(因为勾选了自动编译)
- IDEA 检测到编译完成,自动更新到运行中的应用(因为配置了
Update classes and resources) - DevTools 检测到类文件变化,重新加载类
- 你的修改立即生效!🎉
- 在
-
启动应用:
- 点击运行按钮启动应用
- 或者使用快捷键
Shift + F10
3. 测试热部署
- 启动应用后,修改任意 Java 文件(比如 Controller 中的方法)
- 保存文件(
Ctrl + S) - 观察 IDEA 右下角,会显示 “Classes reloaded” 或类似的提示
- 刷新浏览器,修改应该已经生效!
方法二:手动触发更新
如果自动更新没有生效,可以手动触发:
快捷键方式
- Windows/Linux:
Ctrl + F9(重新编译) - Mac:
Cmd + F9
或者使用更强大的更新:
- Windows/Linux:
Ctrl + F10→ 选择Update 'xxx' Application - Mac:
Ctrl + R→ 选择Update 'xxx' Application
工具栏方式
- 运行应用后,在 IDEA 底部会显示运行窗口
- 点击运行窗口左侧的 🔄 更新按钮(Update Application)
- 选择更新类型:
Update classes and resources- 更新类和资源文件(推荐)Update classes- 仅更新类文件Redeploy- 重新部署Restart- 重启应用
📝 热部署支持的文件类型
✅ 支持热部署(无需重启)
- Java 类文件(Controller、Service、Entity 等)
- 静态资源(HTML、CSS、JS、图片等)
- 配置文件(
application.yml、application.properties) - Thymeleaf 模板(
.html文件)
❌ 不支持热部署(需要重启)
- 修改了
@SpringBootApplication主类 - 修改了
pom.xml依赖 - 修改了数据库连接配置(某些情况下)
- 添加了新的 Bean 定义(某些情况下)
- 修改了静态资源路径配置
🔧 常见问题解决
问题 1:修改代码后没有自动更新
解决方案:
- 检查是否开启了自动编译(见方法一步骤 1)
- 检查运行配置(见方法一步骤 2)
- 手动按
Ctrl + F9重新编译 - 如果还是不行,尝试
Ctrl + F10手动更新
问题 2:修改了 HTML 模板但没有生效
解决方案:
-
检查
application.yml中 Thymeleaf 缓存是否关闭:1 2thymeleaf: cache: false # 确保是 false -
清除浏览器缓存(
Ctrl + Shift + Delete) -
使用无痕模式测试
问题 3:修改了配置文件但没有生效
解决方案:
- 对于
application.yml,通常需要手动触发更新(Ctrl + F10) - 或者重启应用(某些配置更改必须重启)
问题 4:DevTools 没有生效
解决方案:
- 确保
pom.xml中 DevTools 依赖存在 - 重新导入 Maven 项目:
- 右键
pom.xml→Maven→Reload Project
- 右键
- 清理并重新编译:
Build→Rebuild Project
问题 5:热部署后出现类加载错误
解决方案:
- 完全重启应用(停止后重新运行)
- 清理编译输出:
Build→Clean Project
💡 最佳实践
-
开发时使用热部署,生产环境禁用
- DevTools 在生产环境会自动禁用,但建议在打包时排除它
-
合理使用更新策略
- 小改动:使用
Update classes and resources - 大改动:直接重启应用更稳定
- 小改动:使用
-
定期清理编译缓存
- 如果遇到奇怪的问题,尝试
Build→Clean Project
- 如果遇到奇怪的问题,尝试
-
使用 Live Reload(可选)
- DevTools 还支持浏览器自动刷新
- 需要安装浏览器插件:LiveReload
- 访问:http://localhost:8960 时会自动连接
🎯 快速检查清单
在开始使用热部署前,确保:
-
pom.xml中已添加spring-boot-devtools依赖 - IDEA 设置中开启了
Build project automatically - Registry 中开启了
compiler.automake.allow.when.app.running - 运行配置中设置了
Update classes and resources -
application.yml中 Thymeleaf 缓存已关闭
📖 快捷键速查
| 操作 | Windows/Linux | Mac |
|---|---|---|
| 保存文件 | Ctrl + S |
Cmd + S |
| 重新编译 | Ctrl + F9 |
Cmd + F9 |
| 更新应用 | Ctrl + F10 |
Ctrl + R |
| 运行应用 | Shift + F10 |
Ctrl + R |
| 停止应用 | Ctrl + F2 |
Cmd + F2 |
🎉 开始使用
现在你可以:
- 启动应用
- 修改代码
- 保存文件(或等待自动保存)
- 观察 IDEA 提示或手动触发更新
- 刷新浏览器查看效果
享受高效的开发体验吧! 🚀