[发明专利]在运行时对Java类进行注入的方法及装置有效
| 申请号: | 201811188877.2 | 申请日: | 2018-10-12 |
| 公开(公告)号: | CN109445878B | 公开(公告)日: | 2023-05-23 |
| 发明(设计)人: | 易存道 | 申请(专利权)人: | 北京宝兰德软件股份有限公司 |
| 主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F11/34 |
| 代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹;李相雨 |
| 地址: | 100020 北京市朝*** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 运行 java 进行 注入 方法 装置 | ||
本发明实施例公开一种在运行时对Java类进行注入的方法及装置,其中,方法包括:在Java项目运行时,获取用户通过指令所选择的多元化组合配置;通过所述多元化组合配置,在当前加载类中筛选出符合规则类作为可注入Java类;若所述可注入Java类的数目未达到转换数量阈值且当前系统资源充足,则将所述可注入Java类开始注入所述Java项目中,且注入成功的Java类立即生效。本发明实施例能够在Java项目运行时,根据实时需求修改配置,在当前加载类中筛选出符合规则类作为可注入Java类进行注入,即修改其运行时字节码加入业务所需采集逻辑,灵活可控不影响业务性能。
技术领域
本发明实施例涉及计算机技术领域,具体涉及一种在运行时对Java类进行注入的方法及装置。
背景技术
Java项目中在对业务的监控或者数据采集的具体实现,可以通过多种方式达到对已有业务处理逻辑扩充,从而获取所关注模块或具体业务流程中的信息。如加入自身所需处理逻辑、修改已编译字节码文件或者通过动态代理模式等。
除上述方式借助JDK1.5引入的java agent特性,可以通过在main方法执行之前自定义转换器对将被加载的类字节码做以修改或替换,从而使得虚拟机中加载到的类信息包含所需的监控或采集逻辑。
现有方式根据不同需求选取合适方式可以满足较多数场景。但是,现有方式受制于实际运行情景或者实现方式的可行性,无法获取到已有实现的源文件加以修改,或不能够根据需求在不影响当前业务进行添加修改以及恢复已修改内容。
发明内容
由于现有方法存在上述问题,本发明实施例提出一种在运行时对Java类进行注入的方法及装置。
第一方面,本发明实施例提出一种在运行时对Java类进行注入的方法,包括:
在Java项目运行时,获取用户通过指令所选择的多元化组合配置;
通过所述多元化组合配置,在当前加载类中筛选出符合规则类作为可注入Java类;
若所述可注入Java类的数目未达到转换数量阈值且当前系统资源充足,则将所述可注入Java类开始注入所述Java项目中,且注入成功的Java类立即生效。
可选地,用户通过指令所选择的多元化组合配置,包括:
对指定Java类的修改、恢复、功能开启与否的配置;
根据类名规则、继承关系以及访问权限对Java类的筛选规则配置;
转换数量阈值的配置;
多种功能Java类的求同存异配置。
可选地,所述方法还包括:
在将所述可注入Java类开始注入所述Java项目中时,若所述多元化组合配置与上一次多元化组合配置发生改变,综合上一次多元化组合配置中注入的Java类和本次多元化组合配置中筛选出的可注入Java类,恢复不再符合本次多元化组合配置的类的修改,补充或者重新注入本次多元化组合配置所筛选出的Java类。
可选地,在若所述可注入Java类的数目未达到转换数量阈值且当前系统资源充足,则将所述可注入Java类开始注入所述Java项目中,且注入成功的Java类立即生效之后,所述方法还包括:
将所述可注入Java类的注入进度、以及注入成功或失败的结果展示给用户。
第二方面,本发明实施例还提出一种在运行时对Java类进行注入的装置,包括:
获取模块,用于在Java项目运行时,获取用户通过指令所选择的多元化组合配置;
筛选模块,用于通过所述多元化组合配置,在当前加载类中筛选出符合规则类作为可注入Java类;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京宝兰德软件股份有限公司,未经北京宝兰德软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811188877.2/2.html,转载请声明来源钻瓜专利网。





