码迷,mamicode.com
首页 > 编程语言 > 详细

java动态代理

时间:2018-04-06 17:38:18      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:使用   内存   动态   实现   jdk   参数说明   java   body   对象   

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

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动态代理

标签:使用   内存   动态   实现   jdk   参数说明   java   body   对象   

原文地址:https://www.cnblogs.com/evilliu/p/8728022.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!