IDEA热更新代码的两种方式详解

 更新时间:2025年08月31日 14:53:37   作者:何中应  
本文详解IDEA代码热更新的两种方式:系统配置(需Ultimate版,仅支持新增修改)和插件(JRebel/XRebel,支持全面自动更新),系统需手动刷新,插件可定时自动更新但可能影响性能,需要的朋友可以参考下

说明:本文介绍使用 IDEA 热更新代码的两种方式,可以实现不重启项目完成代码更新,以 Java 项目为例。

方式一:系统配置

在旗舰版 IDEA 中,有代码热更新的设置,可以点击 IDEA 菜单栏,选择 Help > About,查看版本是否为 Ultimate Edition,该版本是旗舰版。(Ultimate,奥特曼,极限的,终极的意思)

打开启动项目的配置界面,如下:

在该界面,选择 Modifily options > On 'Update' action > Update classes and resources,选完记得点 Apply,应用并退出

测试一下,启动项目

试下这个接口

调用,返回 Hello World!,没问题

修改返回内容如下

修改完,虽不需要重启项目,但需要点一下这个更新按钮

看!调用接口后,返回了更新后的内容

方式二:插件

第二种方式,是下载一个插件,叫 JRebel and XRebel,(地址:JRebel and XRebel Plugin for IntelliJ IDEA | JetBrains Marketplace

必须下载 2022.4.1版本

下载下来后是一个压缩包文件

通过导入的方式,安装到 IDEA 中,Install Plugin from Disk...,从本地磁盘中安装插件

选择插件压缩包

安装后,插件界面点 Apply 应用并退出,会弹出这个窗口,选择 Restart 重启 IDEA,插件要重启后才能使用。

重启后进入插件配置,激活插件,其中注册地址填 https://jrebel.qekang.com/1e67ec1b-122f-4708-87d0-c1995dc0cdaa,注册邮箱随便写

(我已经激活过了,所以没有 Active 按钮,没有注册应该有这个按钮)

激活成功后,点 Work offline,离线,避免不必要的麻烦

好了,接下来可以使用该插件完成项目热更新。

选择你需要启动的服务,可以看到有两个带有插件图标的启动按钮,分别表示使用该插件启动服务,和使用该插件以 debug 方式启动该服务

如果你的 IDEA 中没有这个界面,可按照下述操作展示

(第一步:展示服务工具栏)

(第二步:添加项目中的服务,如果你的项目是 Spring Boot 项目)

回归主题,点击图标,启动项目

还是这个接口

调用,没有问题

修改接口返回值,控制台可见插件更新的日志

调用接口,接口返回内容已更新,代码完成热更新

区别&特点

介绍一下两种方式的区别&特点,

(1)系统配置的方式,以下操作是不能热更新的,也就是说这种方式有局限性

  • 只对增加的方法或字段生效,减少的方法或字段不会热更新;
  • 只能增加可见性,不能减少;
  • 只能维持已有方法的签名,而不能修改;

相当于只能对增加的修改生效,减少的修改不生效。

(2)插件方式,没有系统配置方式的局限,另外系统配置的方式,更新完代码是需要手动刷新的,而插件方式不用,它是定时周期更新的,周期时长可以在配置中设置,如下:

可想而知的是,时长越短,频率越高,时效越小,但如果你的项目类比较多,IDEA 肯定会比较卡,参考 Sonar(扫描代码规范、漏洞的插件)

总结

以上就是IDEA热更新代码的两种方式详解的详细内容,更多关于IDEA热更新代码的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Zookeeper实现服务注册和服务发现功能

    基于Zookeeper实现服务注册和服务发现功能

    无论是采用SOA还是微服务架构,都需要使用服务注册和服务发现组件,本文将基于 Zookeeper 实现服务注册和服务发现功能,如果跟我一样有同样的困惑,希望可以通过本文了解其他组件如何使用 Zookeeper 作为注册中心的工作原理
    2023-09-09
  • Java实现升级版布谷鸟闯关游戏的示例代码

    Java实现升级版布谷鸟闯关游戏的示例代码

    升级版布谷鸟闯关游戏是一个基于java的布谷鸟闯关游戏,鼠标左键点击控制鸟的位置穿过管道间的缝隙。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-02-02
  • Java杂谈之类和对象 封装 构造方法以及代码块详解

    Java杂谈之类和对象 封装 构造方法以及代码块详解

    在现实世界中,真实存在的东西,比如吉普车,卡丁车,货车。我们在认识它的时候就会在脑海中将它抽象为一种类别叫做车。 好了,那再计算机世界中,它同样的也会这样做
    2021-09-09
  • 在Spring中利用@Order注解对bean和依赖进行排序

    在Spring中利用@Order注解对bean和依赖进行排序

    在Spring框架中,@Order是一个经常被忽视但非常重要的注解,在项目开发中,当我们需要维护bean的特定顺序或者存在许多相同类型的bean时,这个注解就发挥了作用,这篇文章讲的就是如何利用@Order注解对bean和依赖进行排序,需要的朋友可以参考下
    2023-11-11
  • Java的ThreadPoolExecutor业务线程池详细解析

    Java的ThreadPoolExecutor业务线程池详细解析

    这篇文章主要介绍了Java线程池ThreadPoolExecutor详细解析,任务刚开始进来的时候就创建核心线程,核心线程满了会把任务放到阻塞队列,阻塞队列满了之后才会创建空闲线程,达到最大线程数之后,再有任务进来,就只能执行拒绝策略了,需要的朋友可以参考下
    2024-01-01
  • Spring Security OAuth 自定义授权方式实现手机验证码

    Spring Security OAuth 自定义授权方式实现手机验证码

    这篇文章主要介绍了Spring Security OAuth 自定义授权方式实现手机验证码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • java实现发送手机短信

    java实现发送手机短信

    这篇文章主要介绍了java实现发送手机短信,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 基于SpringBoot开机启动与@Order注解

    基于SpringBoot开机启动与@Order注解

    这篇文章主要介绍了SpringBoot开机启动与@Order注解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java对接Modbus协议代码示例

    java对接Modbus协议代码示例

    Modbus是一种串行通信协议,Modbus已经成为工业领域通信协议的业界标准,并且现在是工业电子设备之间常用的连接方式,这篇文章主要给大家介绍了关于java对接Modbus协议的相关资料,需要的朋友可以参考下
    2024-03-03
  • Spring为singleton bean注入prototype bean

    Spring为singleton bean注入prototype bean

    这篇文章主要介绍了Spring为singleton bean注入prototype bean,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07

最新评论