美文网首页
九、动态代理的原理分析

九、动态代理的原理分析

作者: 社会yang | 来源:发表于2019-12-11 17:02 被阅读0次

    动态代理的案例

    定义一个接口:

    定义一个接口的实现类:

    定义一个动态代理的实现类:

    目标对象一般通过构造方法注入

    测试案例:

    分析动态代理生成的实现类

    设置输出动态代理生成的字节码
    System.getProperties().put("sun.misc.ProxyGenerator.saveGeneratedFiles","true");

    通过上述发现,动态生成的类继承了Proxy类,实现了Subject接口,并且覆盖了Object类的 equals()、toString()、hashCode()

    以及Subject的request方法

    此处调用的subject的request方法实际上是调用的是 $Proxy0的request方法,最终都是执行的InvocationHandle的request方法

    Jdk动态代理的源码分析

    此处的 c1为获取的代理的字节码对象

    最终调用其构造方法传入h返回代理对象

    \

    最终都会执行Proxy的下属对象的apply方法

    通过此处发现同事设置 saveGeneratedFiles 来判断是否需要打印字节码类类

    相关文章

      网友评论

          本文标题:九、动态代理的原理分析

          本文链接:https://www.haomeiwen.com/subject/onfagctx.html