news 2026/6/22 5:18:16

IDEA + Spring Boot 的三种热加载方案,看完弄懂,不用加班

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IDEA + Spring Boot 的三种热加载方案,看完弄懂,不用加班

背景

在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果。如果在项目小时,重启速度比较快,等待的时间是较短的。但是随着项目逐渐变大,重启的速度变慢,等待时间 1-2 min 是比较常见的。 这样就导致我们开发效率降低,影响我们的下班时间,哈哈哈~那么是否有方式能够实现,在我们修改完 Java 代码之后,能够不重启项目呢? 答案是有的,通过热部署的方式。并且实现的方式还是非常多,接下来就为大家一一展示

方式一:spring-boot-devtools

spring-boot-devtools 是 Spring Boot 提供的开发者工具,它会监控当前应用所在的 classpath 下的文件发生变化,进行自动重启

注意,spring-boot-devtools 并没有采用热部署的方式,而是一种较快的重启方式。其官方文档解释如下:

“FROM 《Spring Boot 2.X 中文文档 —— 开发者工具》 Spring Boot 通过使用两个类加载器来提供了重启技术。

  • 不改变的类(例如,第三方 jar)被加载到 base 类加载器中。
  • 经常处于开发状态的类被加载到 restart 类加载器中。

当应用重启时,restart类加载器将被丢弃,并重新创建一个新的。这种方式意味着应用重启比冷启动要快得多,因为省去base类加载器的处理步骤,并且可以直接使用。

在项目中,我们需要在 pom.xml 中,引入 spring-boot-devtools 依赖如下:

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <!-- 可选 --> </dependency>
演示

① Run 或者 Debug 运行 Spring Boot 应用。

使用浏览器,访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.1”。

② 修改 HotSwapController 的 #hotSwap01() 方法,设置返回值为 “No.2”。

【关键】我们现在仅仅需要修改了 Java 代码,需要重新编译下代码。点击 IDEA 的菜单 Build -> Build Project,手动进行编译 或者 快捷键编译

  • Mac:Command + F9
  • Windows:Ctrl + F9

此时,IDEA 控制台会看到 Spring Boot 重新启动的日志如下:

  • 所以 spring-boot-devtools 真的不是热部署,而是更快的重启方式。使用浏览器,再次访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.2”,成功!

③ 可能有会觉得手动Build Project 有点麻烦,IDEA 还提供的自动编译的选项。设置方式,点击 IDEA 的菜单 IntelliJ IDEA -> Preference…,然后选择 Compiler 选项卡,将 Build project automatically 勾选上,修改完成后将焦点移出 IDEA ,触发自动编译。

“注意,Build project automatically 后面的一行提示,自动编译仅在项目不处于运行,或者处于 Debug 运行中时,才会自动生效。

所以一定要 Debug 运行 Spring Boot 项目。

方式二: IDEA 提供了 HotSwap 插件,可以实现真正的热部署。

演示

① Run 或者 Debug 运行 Spring Boot 应用。 使用浏览器,访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.1”。

② 修改 HotSwapController 的 #hotSwap01() 方法,设置返回值为 “No.2”。

【关键】我们现在仅仅需要修改了 Java 代码,需要重新编译下代码。点击 IDEA 的菜单 Build -> Build Project,手动进行编译 或者 快捷键编译

  • Mac:Command + F9
  • Windows:Ctrl + F9

此时,我们在 IDEA 中可以看修改的类被重载的提示。如下图所示:

使用浏览器,再次访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “NO.2”,成功!

③ 尝试将 Build project automatically 勾选上,希望实现自动编译,操作步骤如下图:

  • 要注意,需要焦点从 IDEA 离开。例如说,在我们修改完接口的代码之后,可能会切换到浏览器或者 Postman 对该接口进行测试,此时 IDEA 就会自动更新代码和资源,进行热部署。

现在,我们来 修改 HotSwapController 的 #hotSwap01() 方法,设置返回值为 “NO.2”。

鼠标点击电脑操作系统任务栏,以达到 IDEA 失去焦点的效果。我们在 IDEA 中可以看修改的类被重载的提示。如下图所示:

使用浏览器,再次访问 http://localhost:8081/HotSwap/01 接口,返回结果为 “No.2”,成功!

方式三:Jrebel

插件市场搜索安装 Jrebel。然后试用 OR 想办法激活。

使用时 采用 jrebel 启动,而不是 idea 原生启动,这个时候修改了文件内容,就会触发热部署。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 0:14:19

authfwcfg.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/21 4:56:10

2026年大模型学习路线图 | 四大方向+避坑指南,助你顺利转行0_基础能不能转大模型?到底怎么转?

文章分析了2025年普通人转向大模型领域的路径&#xff0c;指出大模型是一个包含应用层、模型层、训练链路等多层技术体系&#xff0c;而非仅是ChatGPT。文章揭示了新人常见误区&#xff0c;详细介绍了数据、平台、应用、部署四大方向及其适合人群&#xff0c;并提供了分阶段学习…

作者头像 李华
网站建设 2026/6/17 6:51:57

FrankenPHP实践

目录 1. 说明 2. 程序修改 3. 性能测试 4. 配置 4.1 Docker化部署 4.2 Caddy泛域名和证书设置 4.3 相关命令 5. 要点&#xff1a; 6. 参考 1. 说明 Frankenphp是一个先进的&#xff0c;结合了高性能Caddy服务器的PHP环境框架&#xff0c;它允许用户只需要少量改动&am…

作者头像 李华
网站建设 2026/6/14 19:45:09

深入解析DDR内存原理、测试方法及在嵌入式系统中的应用

文章目录摘要1. DDR内存核心技术解析1.1 物理架构与存储原理1.2 关键时序参数2. DDR测试方法与工具链2.1 测试环境搭建2.2 MemTest86测试流程3. 嵌入式系统集成实践3.1 ARM Cortex-A内存控制器配置4. 完整测试代码实现5. 常见问题解决5.1 信号完整性问题6. 成果展示技术图谱摘要…

作者头像 李华
网站建设 2026/6/13 22:20:50

交通仿真软件:Aimsun_(3).Aimsun基本操作

Aimsun基本操作 创建和配置仿真网络 在Aimsun中&#xff0c;创建和配置仿真网络是仿真过程的第一步。仿真网络是交通仿真的基础&#xff0c;它包括道路网络、交叉口、交通信号、交通流等基本元素。本节将详细介绍如何在Aimsun中创建和配置仿真网络&#xff0c;以及如何导入和导…

作者头像 李华