Java 动态代理小结
好读书不求甚解
一.动态代理
动态代理:在运行时生成代理类的方式称为动态代理
应用场景:给某一个类增加权限,日志,或者额外功能扩展等
优点:解耦,灵活,扩展性强
1. 动态代理实现步骤
a. 定义接口
b. 实现InvocationHandler
c. 接口 object=Proxy.newInstance()
d. object.方法()--->InvocationHandler->invoke();
2. 动态代理原理
a. Proxy.getProxyClass0()生成代理类ProxyClass文件
b. Proxy.ProxyClassFactory.apply()-->ProxyGenerator.generateProxyClass()生成类的字节数据->Proxy.defineClass0(native方法生成代理class)
c. ProxyClass.getConstructor();获取一个代理类的构造函数
d. 构造函数.newInstance()通过构造函数生成一个代理类的对象
具体代码如下图: