TA的每日心情 | 开心 2021-12-13 21:45 |
---|
签到天数: 15 天 [LV.4]偶尔看看III
|
eg:每一个方法执行前都需要做安全性检查,那么,我们可以创建java.lang.reflect.InvocationHandler的实现类:
package com.zhangjie.spring;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
* 安全性检查
*
* @author DELL
*
*/
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 {
checkSecurity();
Object result = null;
try {
result = method.invoke(this.targetObject, args);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
private void checkSecurity() {
System.out.println(“—-检查安全性—-”);
}
}
checkSecurity()为安全性检查业务方法。
然后使用Handler的代理方法获得实体类:
SecurityHandler handler = new SecurityHandler();
UserManager userManager = (UserManager)handler.newProxy(new UserManagerImpl());
userManager.addUser(“Jack”, “123″);
userManager.delUser(1);
|
|