2024年jrebel本地热加载与远程热加载

目录

一、热部署与热加载

二、实现原理

类加载机制

三,Jrbel插件下载

激活Jrebel

方法一

方法二

方法三

注意

离线模式

配置自动编译

四,本地热部署使用

搭配mybatisPlus


一、热部署与热加载

在应用运行的时升级软件,无需重新启动的方式有两种,热部署和热加载。

对于Java应用程序来说,热部署就是在服务器运行时重新部署项目,热加载即在在运行时重新加载class,从而升级应用。

二、实现原理

热加载的实现原理主要依赖java的类加载机制,在实现方式可以概括为在容器启动的时候起一条后台线程,定时的检测类文件的时间戳变化,如果类的时间戳变掉了,则将类重新载入。

对比反射机制,反射是在运行时获取类信息,通过动态的调用来改变程序行为;
热加载则是在运行时通过重新加载改变类信息,直接改变程序行为。

热部署原理类似,但它是直接重新加载整个应用,这种方式会释放内存,比热加载更加干净彻底,但同时也更费时间。

类加载机制

类加载机制是指在Java程序运行时,将类的字节码文件加载到内存中的过程。这个过程主要包括加载、链接和初始化三个阶段。

  1. 加载(Loading): 加载阶段是将类的字节码文件加载到内存中的过程。这一阶段通常由类加载器(ClassLoader)来完成。Java虚拟机(JVM)提供了三种内置的类加载器:Bootstrap ClassLoader、Extension ClassLoader、和Application ClassLoader。它们分别负责加载Java核心库、Java扩展库和应用程序类。

  2. 链接(Linking): 链接阶段包括验证、准备和解析三个步骤。

    • 验证:确保加载的类符合Java语言规范,不会危害虚拟机的安全。
    • 准备:为类的静态变量分配内存并设置默认初始值。
    • 解析:将类、接口、字段和方法的符号引用转换为直接引用。
  3. 初始化(Initialization): 在这个阶段,执行类的初始化代码。这包括执行静态变量的赋值和执行静态代码块。类的初始化是在其被主动使用时触发的,如创建类的实例、访问类的静态变量或静态方法等。

类加载机制遵循类的生命周期,经历加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中,加载、验证、准备、解析、初始化五个阶段组成了类的加载过程。

三,Jrbel插件下载

首先在Idea中找到setting->plugins,在MarketPlace中搜索该插件。我已经下载好了

点击“应用”后,按要求重启一下Idea,使下载的Jrebel插件生效。

这个时候在Idea主界面侧边栏上就有Jrebel的安装指南出现了。

然后我们根据Jrebel的安装指南进行安装即可。

激活Jrebel

方法一

第一行输入网址:https://jrebel.qekang.com/GUID

生成 GUID 的地址为:

https://www.guidgen.com/

1. 安装JRebel插件后,注册地址填写激活网址 + 生成的GUID,邮箱随便填写,然后直接激活即可

激活网址列表,尽量用排序靠前的

http://jrebel-license.jiweichengzhu.com/{GUID}

https://jrebel.qekang.com/{GUID}

GUID可以使用在线GUID地址在线生成,然后替换{GUID}就行。

2.下面邮箱地址可随便输入。
3.选择我同意
4.提交

方法二

.前置步骤均一致,在填入Team URL时,填入以下内容

http://127.0.0.1:8888/{GUID}

GUID可以使用在线GUID地址在线生成,然后替换{GUID}就行。

2.下面邮箱地址可随便输入。

3.选择我同意

4.提交

如果报Unable to connect to license server.Check your network connnection and/or VPN settings.

需要在此处下载自己机器系统相对应的工具,如图:

下载好了后,进行安装打开(激活插件时,程序保持启动,激活成功后可关闭),如图:

再次执行上面的操作步骤即可。

方法三

https://jrebel.com.cn/{GUID},我是用的第三个才管用

注意

我这里iead是2023.1.1,jrebel是2023..2.4.1都算是新版本,最好还是用旧的参考这个

Idea热部署插件JRebel+XRebel_jrebel插件下载-CSDN博客

离线模式

到这还没完,虽然现在 JRebel就能正常使用了,

但很多人往往用不到几天就提示激活失败, 无法使用了,甚至jar包结束运行后激活就失败了。

原因在于Jrebel激活之后默认是联网使用的 , 在该模式下 , JRebel会一直联网监测激活信息。

所以要调为离线使用的,操作方法就是进入Jrebel设置中点击Work offile 按钮即可。

使其变为离线模式即可。点击以后就是这样

配置自动编译

找到setting->build,Excution->Compiler,并勾选Build project automatically。

然后找到setting->Advanced Setting,勾选Compiler中的

Allow auto-make to start even if developed application is currently running

我是基于idea2023.1.1版本配置的,基本上配置完成就可以了。

四,本地热部署使用

左侧的图标对应的本地热部署,右侧的对应远程热部署。

勾选成功后项目或者模块中的src/resource目录下回生成一个rebel.xml文件

主启动类,和运行栏也会出现Jrebel运行的图标。 

都配置好了以后,可以先试一下,第一次运行要重新编译,打包,执行。如果不生效可以重启一次idea, 一般来讲重启后都可以生效。

搭配mybatisPlus

Jrebel MybatisPlus Extension,顾名思义就是热部署中mybatis的扩展,他的功能就是配合 Jrebel 一起使用,修改 mybatis 的 mapper.xml 文件不用重启项目
在 File -> Setting -> plugin 搜索框搜索Jrebel MybatisPlus Extension

  • 45
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值