zoukankan      html  css  js  c++  java
  • JDK动态代理的深度解析

    水滴石穿


    撸码这么久了,对于动态代理,也只是一直有概念,而从未去深究,夜深人静的时候难以入睡,到底什么是动态代理,怎么代理?

    今天便一探究竟:

    1、被代理对象target必须实现接口

    2、代理对象必须 implements InvocationHandler 或者 extends Porxy;

    3、动态代理是通过反射机制实现的

    针对以上三点,想比已是众所周知,然而实际工作中并未深刻体会到其用法,故也只是停留在概念表面而不知其所以然。

    So...

    创建接口:

    创建被代理对象 target

    创建代理对象

    代理对象如何产生出target的代理呢?

    在 invoke 方法中完成通过反射的调用

    ============然而,这只是调用的方法而已============

    JDK动态代理的基本原理:

    1.代理对象获取target的引用和target implements 的 接口,重新生成一个新的类$Proxy0,

    2.$Proxy extends Proxy implements target的接口

    3.然后重新生成class字节码,重新编译(该过程在内存中实现)

    这里要弄清楚两个东西:

    1、this.h ,来自父类Proxy中

    2、m4

    这里就讲清楚了,刚开始提到的三点

     通过target的接口,根据反射,获取其对应的方法

    代理对象通过Proxy 中的 InvocationHandler 对象对 要执行的方法进行调用

    初来乍到,欢迎指正


    怀着希望走,目标就在前方

  • 相关阅读:
    【原创】ASP.NET Web开发,实现打印Log日志,步骤详解
    [原创] ASP.NET WEBAPI 接入微信公众平台 总结,Token验证失败解决办法
    Mac安装Linux
    mac下终端的一些命令
    《Python程序设计》题库--摘
    Day 28 类的用法延伸
    Day 27 面向对象补充
    Day 24~26 类,面向对象,属性
    Q 91~100
    Q 81~90
  • 原文地址:https://www.cnblogs.com/cfb513142804/p/7461593.html
Copyright © 2011-2022 走看看