0
点赞
收藏
分享

微信扫一扫

CGLib原理解读

CGLib原理解读


知道的事情

1、CGLib通过ASM动态操作指令生成了被代理类的子类;

2、重写了目标类中所有的非private非final的方法;

3、每一个重写的方法都有相应的代理方法;如下

这里面的say方法中,methodInterceptor执行时,this代表重写的代理子类

5、所以在CallBack的intercept方法中,使用的是代理对象,执行的代理方法——实则是:super.f();

6、区别于JDK动态代理,CGlib代理的回调执行方法中,这里确实是代理类对象执行的自己方法(只不过自己的方法实现中完全挪用的super.f(***)而已),并非是被代理对象执行的被代理对象自己的方法(JDK动态代理如此)

其中method参数,是代表被代理类的被代理方法。如A类中的say(String s)

实则最大区别就是,有无被代理对象,或者说是否一定需要被代理对象,callback回调执行是否需要被代理对象

举报

相关推荐

0 条评论