使用JDK 1.5 中自帶的Proxy代理類,可以模仿出Spring AOP的簡(jiǎn)易模型,僅能對(duì)實(shí)現(xiàn)的接口(任何)的類的方法進(jìn)行攔截。
代碼如下:
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;
/** * AOP類 實(shí)現(xiàn)的攔截接口 * @author eMavaj * */ public class MyAOP implements InvocationHandler{ /** * 創(chuàng)建動(dòng)態(tài)代理 把對(duì)象的調(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; } }
呵呵,學(xué)好Java反射,自己寫框架玩玩哦~
|