cglib动态代理实现
时间: 2024-03-09 08:41:37 浏览: 85
cglib动态代理
CGLIB是一个强大的、高性能的代码生成库,它被广泛应用于AOP框架。CGLIB底层使用ASM来操作字节码生成新的类,以控制对象的访问。相比于JDK动态代理,CGLIB更加强大,因为它既可以代理普通类,也能够代理接口。
CGLIB的工作原理如下:
1. 首先,创建一个代理对象。
2. 调用代理对象的方法,例如`proxy.doFly()`。
3. 在调用方法时,会调用MethodInterceptor的intercept方法,这里就是调用我们的CglibProxy。
4. 在CglibProxy的intercept方法中,调用`methodProxy.invokeSuper(o, params)`,这里就是要调用被代理类的原始方法。
5. 在初始化阶段,会生成代理类和被代理类的FastClass。
6. 调用生成的代理类的方法,例如`CGLIB$doFly$0()`,这里会调用被代理类的方法。
总结起来,CGLIB通过生成代理类来帮助我们调用被代理类的方法,生成的代理类继承了被代理类,并在调用方法时通过调用super来调用被代理类的方法。
阅读全文