如何在运行中的Java web应用中增加新的Java类?

场景

在实际Java Web应用开发中,经常会遇到修改一些Java 类时需要重启才能生效(热部署并不会对所有Java 类生效)。线上的项目也是如此,遇到严重的Bug需要重启那个模块所在的Java 应用。
以上的种种,如果项目比较小或许重启一下也没什么,但实际项目大都不小。这里提出一种运行时添加或替换Java 类的方法(个人见识有限,可能已经有类似的东西存在)。

实现步骤

添加 .java到Resouce
javac编译到指定路径
classLoader加载.class
使用容器对这些类管理

效果

设置一个新增或替换Java类的接口,参数为Resouce中类的完整类名

// 添加一个名为Hello的Java类,并执行这个新增类的 void he() 方法
ManageResourceClass manage = DefaultManageResourceClass.getInstance("/application.properties");
Object o = manage.getObject("Hello");
o.getClass().getMethod("he").invoke(o);

这是Hello.java文件的位置

项目的完整代码

gitee路径: https://gitee.com/guozhi97/demoOfJavaThermalcompilation.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值