javasisit对class字节码基本使用以及对一个class多次修改

本文介绍了如何使用Javaassist库对已存在的类字节码进行修改,包括添加新的逻辑,并解决了类只能被加载一次、类加载后不可修改及不同ClassLoader下同名类转化的问题。通过一个UserServiceImpl的例子,详细阐述了整个过程,提供了测试方法和代码仓库链接。
摘要由CSDN通过智能技术生成

需求:(1)对UserServiceImpl现有字节码进行修改逻辑操作

           (2)修改完成后使用该class

             (3) 再次修改UserServiceImpl字节码,添加新逻辑

             (4)修改完成后使用该class

遇到的问题: (1)一个类只能被加载一次

                     (2)类加载后默认不能为修改

                       (3)不同classload 下的同名类不能强行转化

javassist 简介
Javassist是⼀个开源的分析、编辑和创建Java字节码的类库。其主要的优点,在于简
单,⽽且快速。直接使⽤java编码的形式,⽽不需要了解虚拟机指令,就能动态改变类的结
构,或者动态⽣成

原始类文件

javassist API介绍
API执⾏流程

 

public class UserServiceImpl implements UserService{

    public void getUser() {
        System.out.println(&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值