java动态代理

Posted evil_liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java动态代理相关的知识,希望对你有一定的参考价值。

一、静态代理和动态代理对比:

1、静态代理书写要求:

  1)被装饰者和装饰者需要实现同一接口或者实现同一个类。

  2)装饰者要有被装饰者的引用。

  3)需要加强的方法进行加强。

  4)不需要加强的方法,执行原方法。

2、动态代理方法

  在项目运行的时候,生成一个代理的对象,对方法进行增强。

  2种方式:

  1)jdk中方法proxy类,前提是实现接口。

  2)spring中cglib,前提:继承类。

  动态的在内存中创一个代理对象。

  其中jdk中的实现:

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

  参数说明:

    1)ClassLoader loader:是代理对象加载内存的类加载器。一般使用的是被代理对象的类加载器。

    2)Class<?>[] interfaces:是代理对象需要实现的接口集合,一般是被代理对象的所实现接口的集合。、

    3)InvocationHandler:执行处理类,在这里对需要加强的方法,进行加强。

  InvocationHandler:Interface InvocationHandler。他是接口,我们可以通过匿名类来实现该接口。

    方法:Object    invoke(Object proxy, Method method, Object[] args)

    参数说明:

      proxy:代理对象。

      Method:当前执行的方法。

      Object[] args:当前执行的方法需要的参数。

 

以上是关于java动态代理的主要内容,如果未能解决你的问题,请参考以下文章

动态代理

Java 方法代理实例操作,静态代理JDK动态代理CGLIB动态代理

Java动态代理

Java动态代理

java-动态代理

Java 动态代理