zoukankan      html  css  js  c++  java
  • java的动态代理机制

    Spring的AOP的原理就是java的动态代理机制;

    在java的动态代理机制中,有两个重要的类或接口,一个是 InvocationHandler(Interface)、另一个则是 Proxy(Class),这一个类和接口是实现我们动态代理所必须用到的。

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

    Object invoke(Object proxy, Method method, Object[] args) throws Throwable
    其中的三个参数:
      proxy:指代我们所代理的那个真实对象;method:指代的是我们所要调用真实对象的某个方法的Method对象;args:指代的是调用真实对象某个方法时接受的参数

    Proxy这个类的作用就是用来动态创建一个代理对象的类,它提供了许多的方法,但是我们用的最多的就是 newProxyInstance 这个方法:

    public static Object newProxyInstance(ClassLoader loader, Class<?>[] interfaces, InvocationHandler h) throws IllegalArgumentException

      loader:  一个ClassLoader对象,定义了由哪个ClassLoader对象来对生成的代理对象进行加载

      interfaces:  一个Interface对象的数组,表示的是我将要给我需要代理的对象提供一组什么接口,如果我提供了一组接口给它,那么这个代理对象就宣称实现了

            该接口(多态),这样我就能调用这组接口中的方法了

      h:  一个InvocationHandler对象,表示的是当我这个动态代理对象在调用方法的时候,会关联到哪一个InvocationHandler对象上


    参考自:http://www.cnblogs.com/xiaoluo501395377/p/3383130.html
  • 相关阅读:
    HDU 1950 Bridging signals(LIS)
    PKU 1094 Sorting It All Out(拓扑排序)
    中国剩余定理(孙子定理)详解
    51Nod 1079
    翻转游戏
    不构造树的情况下验证先序遍历
    图说流程管理
    从架构到流程
    POS(Plan Operation Support 和 OES(Operation Enable Support)
    流程规划方法→POS法
  • 原文地址:https://www.cnblogs.com/yzf666/p/6402581.html
Copyright © 2011-2022 走看看