使用JDK 1.5 中自帶的Proxy代理類,可以模仿出Spring AOP的簡易模型,僅能對實現(xiàn)的接口(任何)的類的方法進行攔截。
代碼如下:
imp
imp
imp
/**
* AOP類 實現(xiàn)的攔截接口
* @author eMavaj
*
*/
public class MyAOP implements InvocationHandler{
/**
* 創(chuàng)建動態(tài)代理 把對象的調(diào)用用InvocationHandler攔截下,委派給代理(自身)
* @param tag
* @return
*/
public Object createAOP(Object tag){
Object temp = Proxy.newProxyInstance(
this.getClass().getClassLoader(),
tag.getClass().getInterfaces(),
this
);
return temp;
}
/**
* 接口方法,攔截之后回調(diào)的攔截處理函數(shù)
*/
public Object invoke(Object tag, Method method, Object[] arg2)
throws Throwable {
/**
* 攔截處理
*/
if(Isright(tag)){
/**
* 下一層攔截處理
*/
Object temp = method.invoke(tag, arg2);
return temp;
}
return null;
}
private boolean Isright(Object tag){
//do something
return false;
}
}
呵呵,學好Java反射,自己寫框架玩玩哦~