1. 程式人生 > >spring 2.5 AOP之代理類基礎理解

spring 2.5 AOP之代理類基礎理解

JDK或者第三方控制元件動態生成代理物件的位元組碼,
使用jdk的代理類(Proxy)建立代理物件,
Proxy代理類使用前提:目標物件面向介面

//建立代理物件
public Class JDKProxyFactory implements InvocationHandler{
//定義需要生成代理物件的目標物件
private Object targetObject;
//利用目標物件生成代理物件例項
public Object createProxyInstance(Object targetObject){

this.targetObject= targetObject;

//引數:loader:當前目標物件的載入器,interfaces:當前代理物件的所有介面,實現了目標物件的所有介面
//h: invocationhandeler 回撥介面,必須實現invationhandler介面呼叫目標物件的介面方法時,會被當前代理物件攔截,進入invoke方法 return Proxy.newProxyInstance(this.targetoObject.getClass().getClassLoader(), this.targetoObject.getClass().getInterfaces(), this); } @Override public
Object invoke(Object proxy, Method method, Object[] args) throws Throwable { //=============test begin=================== /** * UserServiceImpl作為目標物件 */ UserServiceImpl user = (UserServiceImpl) targetoObject; /** * 許可權控制 */ Object resultObject = null; if
(user.getUser()!=null){ //有許可權==執行方法 resultObject = method.invoke(targetoObject, args); } //=============test end=================== /** * 如果要訪問目標物件,將方法呼叫委派給目標物件 */ /** * arg0:目標物件 * arg1:方法的輸入引數 */ // Object resultObject = method.invoke(targetoObject, args); return resultObject; } }