import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
public class SecurityHandler implements InvocationHandler {
private Object targetObject;
public Object newProxy(Object targetObject){
this.targetObject = targetObject;
return Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
targetObject.getClass().getInterfaces(),
this);
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
check();
Object ret = null;
ret = method.invoke(this.targetObject, args);
return ret;
}
public static void check(){
System.out.println("-------Check_Security-----------");
}
}
也可在invoke方法内对method进行判断,对判断符合某些规则的方法进行相应的check()操作
客户端
public class UserMain {
/**
* @param args
*/
public static void main(String[] args) {
// UserImp ui = new UserImp();
// ui.getUser(12);
SecurityHandler hander = new SecurityHandler();
User user = (User) hander.newProxy(new UserImp());
user.getUser(22);
}
}
Spring AOP
实现切面编程,执行某些操作前可进行相应的验证操作。