美文网首页
Java动态代理

Java动态代理

作者: 星落尘 | 来源:发表于2020-02-22 22:06 被阅读0次

    一 什么是代理    

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

            例如对象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方法。

    相关文章

      网友评论

          本文标题:Java动态代理

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