• 三棵树
    2022-01-08
    示例中不指定interface也可以正常运行,指定interface的作用是?enhancer.setInterfaces()

    作者回复: 早期的Cglib就实现了接口的动态代理,JDK 是后来者居山了

    
    2
  • mojo
    2021-06-30
    老师好,我看了下cglib生成的代码和生成代码的逻辑,不太明白为什么需要使用private static final ThreadLocal CGLIB$THREAD_CALLBACKS;这样一个threadlocal去传递用户设置的method intercept callback对象(在生成类实例的构造函数中传递绑定CGLIB$BIND_CALLBACKS(this)) 如果在cglib生成代码时生成一个setCallBack方法且实例化后,也是可以达到把method intercept callback绑定到生成的proxy实例属性上的目的

    作者回复: 这个 ThreadLocal 存储 Callback[] 的功能主要用于构造器拦截

    共 2 条评论
    1
  • 佑儿
    2022-01-13
    CGLIB代理实现: CGLIB能够代理普通类 ,CGLIB使用ASM框架直接对字节码进行操作,在类的执行过程中比较高效

    作者回复: 👍

    
    
  • 佑儿
    2022-01-13
    JDK动态代理:只能针对interface进行动态代理,无法对普通类进行动态代理,Java动态代理使用Java原生的反射API进行操作,在生成类上比较高效;

    作者回复: 👍

    
    
  • Geek_5aec96
    2021-05-08
    小马哥 想问下jdk和cglib的运行性能的比较?

    作者回复: CGLIB 会略优于 JDK 动态代理

    共 2 条评论
    
  • Geek_9d1fc3
    2021-03-26
    方法执行耗时16ms,小马哥的电脑需要cglib提升一下了。

    作者回复: 哈哈~

    
    
  • 姑射仙人
    2021-02-24
    小马哥,ConfigurationClass为什么要被字节码提升?在ConfigurationClass中定义@Bean,这些Bean会被注册。但ConfigurationClass本身也不需要AOP特性,被注册为Bean也没啥用。还有,在Spring中定义的所有业务Bean都会被JDK动态代理或者CGLIB字节码提升吗?

    作者回复: 实际上,Configuration Class 是方便 AOP 代理 Bean,否则需要打开 proxyTargetClass 来讲筛选的 Bean 设置为 CGLIB 代理。

    共 2 条评论
    
  • sljoai
    2021-02-22
    老师,请问一下: 为啥两次执行CGLibDemo打印的结果会不一样呢(除去时间上的差异),第一次明显打印比第二次多不少内容?

    作者回复: 我本地是一样的

    共 3 条评论
    
  • mgm🍂
    2020-12-28
    有个疑问,需要代理实现接口的非接口方法是否也是要通过CGLIB代理?

    作者回复: 比如?

    共 4 条评论
    