-
JDK实现的动态代理
-
jdk实现的动态代理由两个重要的成员组成,分别是
Proxy
、InvocationHandler
-
Proxy: 是所有动态代理的父类,它提供了一个静态方法来创建动态代理的class对象和实例
-
InvocationHandler: 每个动态代理实例都有一个关联的
InvocationHandler
,在代理实例上调用方法是,方法调用将被转发到InvocationHandler
的invoke方法 -
CGLIB动态代理
-
CGLIB(Code Generation Library)
是一个基于ASM的字节码生成库,它允许我们在运行时对字节码进行修改和动态生成。 -
区别在于:
-
1、JDK原声动态代理时java原声支持的、不需要任何外部依赖、但是它只能基于接口进行代理(因为它已经继承了proxy了,java不支持多继承)
2、CGLIB通过继承的方式进行代理、无论目标对象没有没实现接口都可以代理,但是无法处理final的情况(final修饰的方法不能被覆写)
动态代理的两种方式
最新推荐文章于 2023-11-01 14:11:51 发布