cglib动态代理为什么需要创建3份字节码
时间: 2024-04-19 21:26:06 浏览: 138
cglib的动态代理需要的包
cglib动态代理在生成代理类时,为了实现对目标类的代理,需要创建三份字节码:
1. Target Class字节码:这是目标类的字节码文件,cglib通过读取目标类的字节码,分析其结构,并生成一个继承目标类的子类。
2. Proxy Class字节码:这是代理类的字节码文件,cglib通过继承目标类的子类生成一个代理类,该代理类会重写目标类中的方法,并在方法内部调用目标类的方法。
3. Enhancer字节码:这是cglib框架生成的一个辅助类,用于生成代理类的代码。Enhancer类包含一些静态方法和成员变量,用于设置代理类的属性和行为。
所以,为了实现动态代理,cglib需要创建这三份字节码文件,其中Target Class字节码和Proxy Class字节码是动态生成的,而Enhancer字节码是固定的。这样就可以通过代理类来调用目标类的方法,并在方法调用前后添加一些额外的逻辑。
阅读全文