8,jdk动态代理和CGLIB动态代理的区别

2020-07-08  本文已影响0人  滔滔逐浪

jdk动态代理:
1,需要拼接java源代码: $proxy.java
2, 需要将java源代码便以为class文件
3,采用类加载器读取class文件到程序
4,采用java反射原理执行我们的目标方法
反射机制: method.invoke(target,args)
Cglib动态代理 基于继承我们的目标方法生成代理类对象,(ASM)字节码
1,直接采用字节码技术生成class
2,采用类加载器读取class文件到程序
3,采用fastclass机制调用到我们的目标方法比反射机制效率要高;

fastclass 对我们的目标对象中所有的方法生成一个索引的标记,直接根据索引调用到我们的目标方法。

获取索引文件,然后找到代理类,在supper目标方法,ok

上一篇下一篇

猜你喜欢

热点阅读