JAVA动态代理的实现方式:
一、JDK动态代理原理及实现
JDK动态代理生成的代理对象需要实现代理类的接口,最终生成的字节码类如下:
- public final class $Proxy11 extends Proxy
- implements UserService {
- //......
- }
这里可以看出生成的代理对象需要继承Proxy类,而java只支持单继承,这也就说明为什么JDK代理需要提供代理类的接口的原因,这也是面试过程中经常问到的。
详细原理参见:https://www.cnblogs.com/MOBIN/p/5597215.html
二、CGLIB 动态代理
CGLIB代理需要依赖cglib包,maven依赖如下:
<dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.6</version> </dependency>
用法及jdk 代理的对比:https://blog.csdn.net/a837199685/article/details/68930987