您的位置:首页 > 编程语言 > Java开发

java动态代理处理事务

2017-11-02 14:01 393 查看
·动态代理模型·

有如下UserManage接口:

public interface UserManager{
//增加用户接口
public void addUser(User user);
//删除用户
public void deleteUser(String userId);
//修改用户
public void updateUser(User user);
//根据id获取用户信息
public User findUserById(String userId);
}


实现类:

public class UserManagerImpl implements UserManager{
public void addUser(User user){
System.out.println("--addUser()--");
}

public void deleteUser(String userId){
System.out.println("--deleteUser()--");
}

public void updateUser(User user){
System.out.println("--updateUser()--");
}

public User findUserById(String userId){
System.out.println("--findUserById()--");
return null;
}
}


编写代理类:

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class SecurityHandler implements InvocationHandler{
//代理的目标
private Object targetObject;

public Object createProxyInstance(Object targetObject){
this.targetObject = targetObject;
//根据目标生成代理
return Proxy.newProxyInstance(targerObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(),
this);
}
public Object invoke(Object proxy, Method method, Object[] args){
Object ret = null;
//调用检查权限的方法
if(checkSomething()){
//调用代理目标的方法
ret = method.invok(targetObject,args);
}
return ret;
}
//执行代理的类的方法之前检查的方法
public boolean checkSomething(){
// do some check.
System.out.println("--checkSomething()--");
return false;
}
}


End.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: