网易首页 > 网易号 > 正文 申请入驻

SpringBoot 五种热部署方式,速度超快,简单,粗暴

0
分享至

Spring Boot热部署简介

Spring Boot 的五种常见热部署方式Spring Boot DevToolsJRebelSpring LoadedJavassistDCEVM

Spring Boot 提供了多种方式来实现热部署(Hot Reload)功能,以提高开发效率和降低开发成本。

这是 Spring Boot 自带的一种热部署工具,它能够监控代码修改并自动重启应用。它支持的功能包括:静态资源热部署、LiveReload 热部署、自动重启等。

Spring Boot DevTools 是 Spring Boot 自带的一种热部署工具,它通过监听 classpath 下文件的变化,当文件发生变化时会自动重启应用。使用 Spring Boot DevTools 的步骤如下:

在 pom.xml 文件中添加 devtools 依赖:

在 application.properties 文件中添加如下配置

这样就可以启用 Spring Boot DevTools 了,当修改项目中的代码后,Spring Boot DevTools 会自动监测到变化并重启应用。

JRebel 是一款商业化的 Java 热部署工具,它可以实现零重启的热部署功能。JRebel 可以应用于多种框架,包括 Spring Boot,同时支持 JSP、JSF、Hibernate、EJB 等技术。

JRebel 是一款商业化的 Java 热部署工具,它可以实现零重启的热部署功能。使用 JRebel 的步骤如下:

在 pom.xml 文件中添加 JRebel 的 Maven 插件依赖:

在 application.properties 文件中添加如下配置:

在 IDE 中启动 JRebel 插件,或者在命令行中使用 JRebel Agent 启动应用:

这样就可以使用 JRebel 来实现零重启的热部署功能。

Spring Loaded 是一款开源的 Java 热部署工具,它支持类文件的热替换,可以实现对方法体和静态块的修改,同时也支持对类的新增和删除。但是 Spring Loaded 已经不再维护,不建议使用。

Spring Loaded 是一款开源的 Java 热部署工具,它可以实现类文件的热替换。使用 Spring Loaded 的步骤如下:

在 pom.xml 文件中添加 Spring Loaded 的 Maven 插件依赖:

在 IDE 中启动 Spring Loaded 插件,或者在命令行中使用 Spring Loaded Agent 启动应用:

这样就可以使用 Spring Loaded 来实现类文件的热替换。

Javassist 是一款 Java 字节码编辑库,它可以通过修改字节码实现热部署。Javassist 可以通过代码生成和字节码修改来实现动态修改 Java 类,并支持修改类的方法、属性和构造函数等。

Jrebel是Java开发最好的热部署工具,对Spring Boot 提供了极佳的支持,JRebel为收费软件,试用期14天。,可直接通过插件安装。

操作步骤

在 pom.xml 文件中添加 Javassist 的 Maven 依赖:

编写一个类文件的热替换器,代码如下:

public class HotSwapper {

public static void swap(Class oldClass, Class newClass) throws Exception {

Field[] fields = oldClass.getDeclaredFields();

Object[] values = new Object[fields.length];

for (int i = 0; i < fields.length; i++) {

fields[i].setAccessible(true);

values[i] = fields[i].get(null);

Class oldSuperclass = oldClass.getSuperclass();

Field superClassField = null;

if (oldSuperclass != null) {

superClassField = oldClass.getSuperclass().getDeclaredField("subclass");

superClassField.setAccessible(true);

oldClass.getDeclaredField("subclass").set(null, newClass);

for (int i = 0; i < fields.length; i++) {

fields[i].setAccessible(true);

fields[i].set(null, values[i]);

if (oldSuperclass != null) {

superClassField.set(oldClass.getSuperclass(), null);

superClassField.set(newClass, oldClass.getSuperclass());

在应用启动时,使用 Javassist 修改类的字节码,代码如下:

ClassPool classPool = ClassPool.getDefault();

CtClass oldClass = classPool.get("com.example.MyClass");

CtClass newClass = classPool.makeClass("com.example.MyClass");

newClass.setSuperclass(oldClass.getSuperclass());

newClass.setModifiers(oldClass.getModifiers());

newClass.setInterfaces(oldClass.getInterfaces());

newClass.addConstructor(CtNewConstructor.copy(oldClass.getDeclaredConstructors()[0], newClass, null));

newClass.writeFile();

HotSwapper.swap(oldClass.toClass(), newClass.toClass());

这样就可以使用 Javassist 实现热部署了。在修改类文件后,重新加载类的时候可以使用上述代码进行字节码的动态修改和类的动态替换,从而实现热部署。

DCEVM 是一款开源的 Java 虚拟机,它能够实现 Java 类的热替换。DCEVM 可以实现对类的新增、删除和修改,支持 Java 7 和 Java 8。

以上这些热部署工具在 Spring Boot 中都有应用,但是在实际使用过程中,需要根据自己的实际情况选择合适的工具。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
不叫暂停、不换人、听不懂英文!袁志比蔡斌更差!男教练太糟糕!

不叫暂停、不换人、听不懂英文!袁志比蔡斌更差!男教练太糟糕!

金毛爱女排
2024-06-21 05:09:57
《海天雄鹰》为何骂声一片?军旅剧四个烂大街的俗套,一个也不少

《海天雄鹰》为何骂声一片?军旅剧四个烂大街的俗套,一个也不少

指尖阻挡流年
2024-06-20 16:11:11
章子怡带儿子出席活动,4岁弟弟表情不悦现场闹脾气,子怡很无奈

章子怡带儿子出席活动,4岁弟弟表情不悦现场闹脾气,子怡很无奈

青芳草
2024-06-21 08:15:29
艾顿携手希尔德加盟湖人,詹姆斯亲自接待,佩林卡封神操作引热议

艾顿携手希尔德加盟湖人,詹姆斯亲自接待,佩林卡封神操作引热议

阿牛体育说
2024-06-21 07:02:06
科普:精液真的有营养吗?

科普:精液真的有营养吗?

喜马拉雅主播暮霭
2024-06-20 08:44:54
谷爱凌和男友最新亮相!两人同框好般配,身穿球衣搭黑丝各位好看

谷爱凌和男友最新亮相!两人同框好般配,身穿球衣搭黑丝各位好看

果娱
2024-06-20 18:02:24
恭喜书豪!林书豪P+联赛率队夺队史首冠 喜极而泣!

恭喜书豪!林书豪P+联赛率队夺队史首冠 喜极而泣!

直播吧
2024-06-20 22:42:17
姜萍越来越危险了!

姜萍越来越危险了!

财经要参
2024-06-20 08:30:33
笑麻了!林更新发文称“彻底破防”,粉丝送上新称号“方邪门”

笑麻了!林更新发文称“彻底破防”,粉丝送上新称号“方邪门”

有趣的火烈鸟
2024-06-20 22:16:07
新型卖淫方式,让人预想不到,但却真实存在!

新型卖淫方式,让人预想不到,但却真实存在!

雪影的情感
2023-11-18 11:51:16
中国海警突袭菲军补给船,打开箱子之后,发现都是美制突击步枪!

中国海警突袭菲军补给船,打开箱子之后,发现都是美制突击步枪!

文雅笔墨
2024-06-20 15:47:20
乌媒:若前线局势未来数月依旧吃紧,乌军总司令瑟尔斯基可能将被解职

乌媒:若前线局势未来数月依旧吃紧,乌军总司令瑟尔斯基可能将被解职

环球网资讯
2024-06-20 06:10:23
姜萍家院子成“网红打卡地”,村民称正常生活受影响

姜萍家院子成“网红打卡地”,村民称正常生活受影响

上游新闻
2024-06-20 12:05:18
一集入坑!尺度大到头皮发麻!

一集入坑!尺度大到头皮发麻!

天天美剧吧
2024-06-20 11:48:06
湖人17座冠军遭质疑!名嘴吐槽这是作弊:明尼阿波利斯5冠不算数

湖人17座冠军遭质疑!名嘴吐槽这是作弊:明尼阿波利斯5冠不算数

罗说NBA
2024-06-20 20:51:14
有趣!塞尔维亚迟迟不进球,聂卫平:梅西+马拉多纳一起上也没用

有趣!塞尔维亚迟迟不进球,聂卫平:梅西+马拉多纳一起上也没用

足球大腕
2024-06-21 00:26:04
43岁霍思燕参加活动,衣服皱皱巴巴,脸上印第安纹明显,老太快!

43岁霍思燕参加活动,衣服皱皱巴巴,脸上印第安纹明显,老太快!

郑丁嘉话
2024-06-18 10:27:16
一分都不能少!TA记者:绿军必须提供4年1.27亿才能提前续约怀特

一分都不能少!TA记者:绿军必须提供4年1.27亿才能提前续约怀特

直播吧
2024-06-20 22:53:09
Stellantis集团:如经济效益可行,零跑汽车可在集团旗下全球任何一家工厂进行生产

Stellantis集团:如经济效益可行,零跑汽车可在集团旗下全球任何一家工厂进行生产

经济观察报
2024-06-20 22:14:06
38岁的杨幂与37岁的刘亦菲:一个顾盼生姿,一个大势已去

38岁的杨幂与37岁的刘亦菲:一个顾盼生姿,一个大势已去

小韩的幸福生活
2024-06-17 09:13:46
2024-06-21 10:32:49
互联网技术学堂
互联网技术学堂
专注技术分享,推送互联网最新资讯,分享面试干货 记录程序之路,分享程序人生 很高兴认识大家
29文章数 30关注度
往期回顾 全部

科技要闻

美媒:苹果正与百度阿里百川等谈AI合作

头条要闻

媒体:中国外交部刚批评美国 五角大楼就送来"神助攻"

头条要闻

媒体:中国外交部刚批评美国 五角大楼就送来"神助攻"

体育要闻

1-0"吊打"意大利 西班牙这就叫冠军相?

娱乐要闻

叶舒华参加柯震东生日聚会,五毒俱全

财经要闻

普华永道,引火烧身

汽车要闻

售价11.79-14.39万元 新一代哈弗H6正式上市

态度原创

时尚
艺术
亲子
房产
旅游

黑色的透视单品,就选这6件!

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

亲子要闻

你这声丈母家叫的 估计你同学妈妈心都化了 网友:情商智商双在线

房产要闻

海棠湾!一所重量级国际学校真的来了!

旅游要闻

铁路儿童票新规 已有超4900万小旅客免费出行

无障碍浏览 进入关怀版