java动态代理处理事务
2017-11-02 14:01
393 查看
·动态代理模型·
有如下UserManage接口:
实现类:
编写代理类:
End.
有如下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.
相关文章推荐
- 2014-07-16 Java Web的学习(13)-----DBUtil&基于DBUtil的事务处理(动态代理AOP)
- 在Java中利用动态代理实现数据库连接与事务的自动管理
- Java 代理模式-JDK动态代理-实现对请求中文乱码的处理
- Java事务(6)——使用动态代理(Dynamic Proxy)
- java事务全解析(六)--使用动态代理(Dynamic Proxy)完成事务
- 【java】动态代理+ThreadLocal实现数据源及事务管理
- 数据库事务(五):利用动态代理实现事务处理
- 在Java中利用动态代理实现数据库连接与事务的自动管理
- Java事务之六——使用动态代理(Dynamic Proxy)
- Java事务(五) - 使用动态代理改造
- Java事务之六——使用动态代理(Dynamic Proxy)
- 【Java基础】动态代理实现AOP之控制事务
- java 使用动态代理 和ThreadLocal实现事务管理实例
- Java JDK动态代理实现自己的事务管理器
- java事务学习笔记(六)--使用动态代理(Dynamic Proxy)完成事务
- java 使用动态代理 - ThreadLocal实现事务管理(转)
- Spring中AOP的两种代理方式(Java动态代理和CGLIB代理)
- Java基础(反射,类加载,动态代理)
- JAVA动态代理
- java的cglib动态代理报java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter