美文网首页
JAVA反射与代理

JAVA反射与代理

作者: huapro | 来源:发表于2019-05-20 20:19 被阅读0次
JDK动态代理UML图 image.png CGLIB动态代理UML

每一个动态代理类都必须要实现InvocationHandler这个接口,并且每个代理类的实例都关联到了一个handler,当我们通过代理对象调用一个方法的时候,这个方法的调用就会被转发为由InvocationHandler这个接口的 invoke 方法来进行调用。我们来看看InvocationHandler这个接口的唯一一个方法 invoke 方法:

image.png

动态代理生成的代理对象,最终都可以用接口接收,和目标对象一起形成了多态,可以随意切换展示不同的功能。但是切换的同时,只能使用该接口定义的方法。

image.png image.png
  • 一个被代理实现类的接口 + InvocationHandler 接口 ===共同初始化Proxy类对象
  • Proxy对象实例在调用被代理对象接口函数时候先调用实现了InvocationHandler接口的动态代理对象实例的invoke方法,
  • 然后根据动态代理对象实例初始化时入参(被代理对象实例)进一步给method.invoke()函数入参,
  • 根据method.invoke入参情况进而决定下一步是否回到被代理类对象实例的真实函数调用(在这一步之前之后可以进行其他操作,实现了增强效果)

InvocationHandler增强器,Proxy代理者,proxy通过class.classLoader 和class.interface ,InvocationHandler来得到一个代理对象

每一个动态代理类的调用处理程序都必须实现InvocationHandler接口,并且每个代理类的实例都关联到了实现该接口的动态代理类调用处理程序中,当我们通过动态代理对象调用一个方法时候,这个方法的调用就会被转发到实现InvocationHandler接口类的invoke方法来调用,看如下invoke方法:

image.png

相关文章

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • 安卓反射和动态代理的应用

    提纲 java反射基础 反射在Android中的应用 Java动态代理 动态代理在Android的应用 java反...

  • Java反射与代理

    反射 类是程序的一部分,每个类都有一个Class对象。换言之,每当编写并编译了一个新类,就会产生一个Class对象...

  • JAVA反射与代理

    每一个动态代理类都必须要实现InvocationHandler这个接口,并且每个代理类的实例都关联到了一个hand...

  • 一文带你搞懂Java反射和动态代理

    分享 Java反射和动态代理

  • Dubbo Proxy 原理与实例

    Java代理 Java代理:通过反射和InvocationHandler回调接口实现 Proxy.newProxy...

  • Java反射机制详解(二)

    本篇文章继续介绍Java反射机制,不同的是侧重于介绍动态代理。动态代理是代理模式中的一种,是通过Java反射机制来...

  • Java反射机制总结(二)

    本篇文章继续介绍Java反射机制,不同的是侧重于介绍动态代理。动态代理是代理模式中的一种,是通过Java反射机制来...

  • Java反射与动态代理

    Java反射 Java反射机制可以动态地获取类的结构,动态地调用对象的方法,是java语言一个动态化的机制 特点:...

  • Java反射与动态代理

    代理模式 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活 中...

网友评论

      本文标题:JAVA反射与代理

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