CGLib原理解读

作者: 大黑跟小白的日常 | 来源:发表于2019-01-27 16:09 被阅读92次

CGLib原理解读

知道的事情

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

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

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

被代理类

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

注意sayProxy(String s)方法,是用于intercept中执行用的

4、动态生成的代理类中

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

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

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

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

相关文章

  • CGLib原理解读

    CGLib原理解读 知道的事情 1、CGLib通过ASM动态操作指令生成了被代理类的子类; 2、重写了目标类中所有...

  • Spring AOP的实现原理--CGLIB动态代理

    Spring AOP的实现原理--CGLIB动态代理 CGLIB(Code Generation Library)...

  • Spring源码学习(3) —— CglibAopProxy实现

    前面我们解读了jkd动态代理方式实现aop的源码,今天我们重点来看下cglib方式实现aop的原理。与JdkDyn...

  • 动态代理——CGLib

    动态代理——CGLib 基本使用 或者 原理分析,待续...

  • cglib实现原理

    cglib简介 CGLIB(Code Generation Library)是一个开源项目!是一个强大的,高性能,...

  • JDK和CGLIB动态代理区别

    JDK和CGLIB动态代理区别 一 JDK和CGLIB动态代理原理1、JDK动态代理利用拦截器(拦截器必须实现In...

  • 动态代理-Cglib实现原理

    动态代理-Cglib实现原理 Cglib提供了一种运行时动态增强类的功能。基于ASM在运行时动态创建class,暴...

  • cglib动态代理

    概念及特点 使用CGLib实现动态代理,依赖cglib-x.x.x.jar 原理是对指定的业务类动态生成一个子类,...

  • CGLIB动态代理机制

    CGLIB原理 cglib是一个java字节码的生成工具,它动态生成一个被代理类的子类,子类重写被代理的类的所有不...

  • Spring面试常问内容

    Spring 面试问题 TOP 50 IOC、AOP、AOP原理动态代理和cglib原理与二者之间的区别、Bean...

网友评论

    本文标题:CGLib原理解读

    本文链接:https://www.haomeiwen.com/subject/fengjqtx.html