jdk和cglib动态代理区别
-
目标类不同
jdk目标类需要实现接口。
cglib不需要。 -
代理类生成方式不同
jdk内部字节码生成代理类。
cglib使用ASM字节码生成库生成代理类。 -
代理类和目标类关系不同
jdk代理类实现目标类接口,jdk无法代理目标类中static或private的方法。
cglib 代理类继承目标类重写目标类方法,cglib无法代理final修饰的目标对象或方法。 -
调用目标方法方式不同
jdk通过反射调用目标类方法。
cglib 通过子类调用父类方式调用。