Java动态代理

一 什么是代理    

        给目标对象提供一个代理对象,由代理对象管理对目标对象的引用;

        例如对象A 提供某功能,现在C要使用A   但C并不直接引用A   C引用B   B管理对A的引用,这里A被B代理了。

        代理的目的是 降低目标对象对系统带来的复杂性,通过代理对象对原有的业务进行增强。

1.1静态代理:

        被代理的类在编译运行前已经确定其类型,随着被代理对象新增,业务逐渐复杂,可维护性降低,适合一般业务场景,代理较少的时候,违反设计原则中的开闭原则

静态代理

 1.2 动态代理

        被代理类在运行时才能确定其类型,方法执行通过反射方式动态获取执行;

动态代理执行过程

    

二 动态代理原理

            类的完整生命周期:

            .java 文件---(编译)-------》  .class文件-----(类加载)-----》Class对象-----(实例化)----》实例对象----------》卸载-----------》  .java 文件

  .class文件 本质是01二进制串,可以存放在硬盘和内存中。

追踪源码可得,最终动态生成的代理类 ¥Proxy+num实现了Proxy 以及方法所在的接口,方法实现最终调用

InvocationHandler的 invoke方法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • http://www.importnew.com/20339.html 动态创建代理类 代理模式:代理模式的作用=...
    蜗牛在北京阅读 2,695评论 0 0
  • 相关概念1.1 代理  在某些情况下,我们不希望或是不能直接访问对象 A,而是通过访问一个中介对象 B,由 B 去...
    天空在微笑阅读 3,122评论 0 0
  • 基础:class文件简介及加载流程 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种cl...
    jiangmo阅读 3,294评论 0 1
  • Java动态代理 引言 最近在看AOP代码,其中利用到了Java动态代理机制来实现AOP织入。所以好好地把Java...
    草捏子阅读 5,393评论 0 18
  • 原文 初,虞叔有玉,虞公求旃,弗献。既而悔之,曰:“周谚有之,‘匹夫无罪,怀璧其罪’。吾焉用此,其以贾害也。”乃献...
    flyinrain12123阅读 2,944评论 2 1