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

java代理的实现

时间:2016-07-15 00:34:11      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

1、新建一个接口UserDao

public interface UserDao{

public void save(User u);

}

 

2、实现接口

public class UserDaoImpl implements UserDao{

public void save(User u){

system.out.println(u+"save!");

}

}

 

3、新建业务逻辑对象,实现在调用被代理对象的方法时添加日志

public class LogIntercepter implements InvocationHander{

private Object target;//目标对象,也叫被代理对象

public Object getTarget(){

return target;

}

public Object setTarget(Object target){

this.target =target;

}

public void beforeMethod(Method m){

system.out.println(m.getName()+" start,Log remeber!");

}

public Object invoke(Object proxy,Method m,Object[] args){

beforeMethod(m);

m.invoke(target,args);

return null;

}

}

 

public void TestProxy(){//测试方法

UserDao userDao=new UserDaoImpl();

LogIntercepter li=new LogIntercepter();

li.setTarget(userDao);//设置被代理对象

UserDAO userDAOProxy = (UserDAO)Proxy.newProxyInstance(userDAO.getClass().getClassLoader(), userDAO.getClass().getInterfaces(), li);

//userDAOProxy 是userDao的代理对象
userDAOProxy.save(new User());

}

 

 

原生java实现动态代理几个关键点

1、被代理对象必须是接口形式

2、具体的业务逻辑对象必须实现InvocationHander接口,并重写invoke方法,同时将代理对象能够设置进去

3、创建代理对象时Proxy.newProxyInstance(。。。)方法,注意传入参数

 

java代理的实现

标签:

原文地址:http://www.cnblogs.com/huangssd/p/5672043.html

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