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

Java之动态代理

时间:2016-05-03 23:47:51      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

动态代理是GOF二十三种设计模式之一,数据库连接和事务管理,spring中aop的方法拦截,以及单元测试时用到的mock对象等都用到了动态代理。

利用jdk自带的类java.lang.reflect.Proxy可以实现java的动态代理。

通过使用Proxy.newProxyInstance()方法创建动态代理。

newProxyInstance()方法有三个参数:
1、ClassLoader
2、需要代理的接口
3、InvocationHandler接口的实现

InvocationHandler handler = new MyInvocationHandler();
MyInterface proxy = (MyInterface) Proxy.newProxyInstance(
                            MyInterface.class.getClassLoader(),
                            new Class[] { MyInterface.class },
                            handler);

我们来看看InvocationHandler接口的定义

public interface InvocationHandler{
  Object invoke(Object proxy, Method method, Object[] args)
         throws Throwable;
}

所有对动态代理对象proxy的方法调用都会转到InvocationHandler接口的实现类上。

InvocationHandler接口只有一个invoke方法,invoke方法中的proxy参数就是动态代理对象,method对象则是被代理接口中的方法,args参数则是该method的方法参数。

 

Java之动态代理

标签:

原文地址:http://www.cnblogs.com/imars/p/5456787.html

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