IDEA集成JRebel插件,实现实时热部署

系列文章目录

文章目录


一、JRebel是什么?

JRebel 是一款针对 Java 开发的热部署工具,主要用于提升开发效率。它的核心作用是避免重复启动应用,允许开发者在修改代码后立即看到变更效果,而无需重启服务器或重新部署应用。

1.1、对比传统开发流程

场景 传统方式 JRebel方式
修改单个JAVA类代码 重启整个应用 立即生效(一般3秒左右),无需重启应用
修改Spring配置或者Mybatis的XML文件 重启整个应用 自动重新加载配置
调式Debug时,修改代码逻辑 重启后丢失会话 保持状态,继续调试

1.2、JRebel特性以及优势

(1) 实时热部署(Hot Reloading)

1.修改 Java 代码(如类、方法、字段等)后,JRebel 会动态加载变更,直接生效,省去传统开发中的"编译→部署→重启"流程。

2.容 Spring、Spring Boot、Jakarta EE、Hibernate、MyBatis 等主流框架,对注解、配置文件的修改也能实时生效。

(2) 节省开发时间

1.传统重启可能需要几十秒甚至几分钟,而 JRebel 的实时更新几乎无延迟。

2.项目越复杂,重启耗时越长,JRebel 的收益越明显。

(3) 调试友好

热部署不会重置应用状态(如会话、数据库连接),调试时能保持上下文,避免重复操作。


二、IDEA集成JRebel

(1)点击IDEA 左上方File 按钮后,选择Settings ,点击后打开IDEA 设置面板。也可以通过快捷键Ctrl+Alt+S进行打开

(2)点击Plugins 按钮,切换到Marketplace 后,搜索JRebel 插件并点击Install 进行安装。

(3)安装完成后,重启IDEA ,会发现IDEA 左右两边多了几个图标。这表面JRebel 插件已经安装完成。

(4)打开Settings 面板,点击JRebel&Settings 后,点击Actvice license 按钮激活JRebel

(5)填写激活码,免费的激活码: https://jrebel.chatsbot.org/34feb0a0-b0f6-4a55-bd02-c960c42d101f,邮件地址随便填写一个,勾选同意后,点击Activce 进行激活。

(6)提示JRebel activated 后,表示激活完成。重启IDEA!!!

(6)在此点击JRebel&XRebel 可以看到已经是Active 状态。

(7)尝试使用JRebel 进行Debug 运行,如果控制台打印出JRebel 日志,则表示JRebel 运行成功。


三、IDEA以JRebel运行报错处理

有些Windows登录用户是使用中文名字,那么在使用JRebel运行时,可能出现一下报错
JRebel-JVMTI [ERROR] You're using an incompatible 'jrebel.jar' with the JRebel Agent ,如果您以JRebel 运行项目时报这个错误,多半是由于中文用户名称导致的,解决方案参考一下文章:JRebel-JVMTI [ERROR] You're using an incompatible 'jrebel.jar' with the JRebel Agent.【完美解决方案】


四、IDEA以JRebel运行演示实时热部署

以下代码是一个controller 接口代码,调用该方法后,返回一个Hello!

java 复制代码
    @AnInterfaceRateLimiter(rate = 5, rateInterval = 10, rateIntervalUnit = RateIntervalUnit.SECONDS)
    @AnonymousPostMapping(value = "/rateLimiterInterface", consumes = MediaType.APPLICATION_JSON_VALUE)
    public ResponseResult rateLimiterInterface() {
        return ResponseResult.success("Hello!");
    }

我们尝试将返回值Hello!改为Hello!JRebel! ,等待JRebel 自动更新代码。

再次使用PostMan 访问,可以发现返回值已经改变,这表明JRebel 热部署生效了。

相关推荐
Momentary_SixthSense2 分钟前
如何对较长的Stream链进行Debug
android·java·开发语言
JAVA学习通5 分钟前
微服务项目->在线oj系统(Java-Spring)--竞赛管理
java·sql·spring
鄃鳕7 分钟前
C++坑系列,C++ std::atomic 拷贝构造函数问题分析与解决方案
java·javascript·c++
木易小熙24 分钟前
Guava Cache
java·spring·guava
JIngJaneIL1 小时前
图书馆自习室|基于SSM的图书馆自习室座位预约小程序设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·图书馆自习室
毕设源码-赖学姐1 小时前
【开题答辩全过程】以 J2EE技术在在线购物分享应用中的应用为例,包含答辩的问题和答案
java·java-ee
Tadas-Gao1 小时前
微服务可观测性的“1-3-5”理想:从理论到实践的故障恢复体系
java·开发语言·微服务·云原生·架构·系统架构·可观测
Nᴏsᴛᴀʟɢɪᴀ念1 小时前
多线程奇幻漂流:从单核到多核质变(一)
java·开发语言·jvm·多线程
Swift社区1 小时前
SQL 执行异常排查 java.sql.SQLException:从 SQLException 说起
java·数据库·sql
ss2731 小时前
手写MyBatis第88弹:从XML配置到可执行SQL的完整旅程
java·开发语言·mybatis