代理模式
代理模式---->拦截所有目标对象的方法,执行方法前有事务日志的处理,执行方法后有事务日志的提交
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class ProxyFactoryBean implements InvocationHandler {
private Object target;
public void setTarget(Object target) {
this.target = target;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("事务/日志的处理...");
Object result = method.invoke(target, args);
System.out.println("事务/日志的提交...");
return result;
}
public Object getProxy() { //获取目标对象
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
}
测试类
import proxy.ProxyFactoryBean;
import proxy.UserService;
import proxy.UserServiceImp;
public class Test7 {
public static void main(String[] args) {
UserServiceImp userServiceImp = new UserServiceImp();
ProxyFactoryBean proxyFactoryBean = new ProxyFactoryBean();
proxyFactoryBean.setTarget(userServiceImp); //获得联系
UserService userService = (UserService)proxyFactoryBean.getProxy(); //UserService是接口类
userService.update();
userService.delete();
}
}

浙公网安备 33010602011771号