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()通过构造函数生成一个代理类的对象

具体代码如下图:

Java 动态代理小结

Java 动态代理小结