1、作用范围
jdk:适用于实现接口的类。主要面向接口。
cglib:通过继承类的方式来实现,该类应该为非final类型。
2、技术实现jdk:实现InvocationHandler横切+反射
cglib:实现MethodInterceptor
接口。通过修改class文件字节码来对方法进行增强。
3、各jdk版本性能1.6,1.7: cglib 优于 jdk
1.8: jdk 优于 cglib
为什么?
cglib通过fastclass来创建类,避免使用反射。
4、技术实现这里需要提到字节码和class类的相互生成。
a. 字节码->class类:classloader
b. class类->字节码增强:字节码框架asm,Javassist。对应类分别是:classwriterhe 和 classpool。
5、ASM介绍
ASM 是一个 Java 字节码操控框架。它能够以二