代码热加载
这篇解决什么
改完 Java 后不必每次冷启动。工程变大后重启常要一两分钟。下面三种做法按推荐度选用。
单体主类是 ruoyi-office/yudao-server 的 YudaoServerApplication。微服务改各服务自己的 *Application。端口默认 48080。
三种做法
| 名称 | 说明 | 推荐度 |
|---|---|---|
| IDEA HotSwap | Ultimate 专属。Debug 启动后点热加载。社区版没有 | 推荐日常小改 |
| JRebel | 覆盖面最大,旗舰版和社区版都能装。商业插件 | 改类结构多时用 |
spring-boot-devtools | classpath 变化会重启,整体仍慢 | 不推荐当主力 |
官方说明见 Spring Boot · Developer Tools。
如何用 IDEA HotSwap
- 启动项主类填
cn.iocoder.yudao.server.YudaoServerApplication,模块选yudao-server。 - Working directory 设成
ruoyi-office/。 - 打开 HotSwap / Update classes and resources。
- Debug 启动,不要只点 Run。
- 改方法体后点调试栏的热加载。

示意图:对应 IDEA Ultimate 的 Spring Boot 启动项。

示意图:窗口里应是 YudaoServerApplication,被改模块是 yudao-module-system-server 这类 *-server。
HotSwap 能力窄
通常只能改方法体,或增加方法、字段。不能删成员、收紧可见性、改方法签名。这类改动请重启,或改用 JRebel。
如何用 JRebel
到 JetBrains Marketplace · JRebel 装官方插件,用正版许可证激活。然后用 Debug with JRebel 启动,改完同样点热加载。
Mapper XML 热替换需要官方 MyBatis-Plus 扩展插件。
不要用第三方激活
网上的 GUID 激活页、破解包不要用。过期或来路不明的地址会失效,也有安全风险。
扩展时注意
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 启动类 | 单体入口 | ruoyi-office/yudao-server/.../YudaoServerApplication.java |
| 被改模块 | 必须已被 yudao-server 依赖,否则热替换的类不在进程里 | ruoyi-office/yudao-module-*-server/ |
| 前端 | Vue/TS 走 Vite 热更新,不必用这篇 | ruoyi-office-vben/apps/web-antd/ |
改 application.yaml、没有扩展时的 Mapper XML、部分 Spring 代理类,热加载经常不生效,直接重启更省事。多模块要先编译被改的 *-server 再点热加载。带 @RequestMapping 的 Controller 必须已在当前进程的 classpath 里。
配置与操作
在 IDEA 打开热替换,改 *-server 后先编译再加载。yaml、部分 XML 和未进 classpath 的 Controller 仍要重启。前端走 Vite,不用本篇。
开启见 框架层。截图见上文 IDEA。
