posts - 17,  comments - 12,  trackbacks - 0

          //無(wú)接口類的aop方法實(shí)現(xiàn)
          package cn.wyz.aop;

          import java.lang.reflect.Method;

          import cn.wyz.service.impl.PersonServiceBean;

          import net.sf.cglib.proxy.Enhancer;
          import net.sf.cglib.proxy.MethodInterceptor;
          import net.sf.cglib.proxy.MethodProxy;

          public class CGlibProxyFactory implements MethodInterceptor{
           

           private Object targetObject;
           
           public Object creatProxyIntacce(Object targetObject){
            this.targetObject=targetObject;
            Enhancer enhancer=new Enhancer();
            enhancer.setSuperclass(this.targetObject.getClass());//非final方法
            enhancer.setCallback(this);
            return enhancer.create();
             
              }

           public Object intercept(Object arg0, Method arg1, Object[] arg2,
             MethodProxy arg3) throws Throwable {
            PersonServiceBean bean=(PersonServiceBean)this.targetObject;
            Object result=null;//環(huán)繞通知
            
            if(bean.getUser()!=null){
             //......advice()---->前置通知
             try {
              result=arg3.invoke(this.targetObject, arg2);
              
              //..........afteradvice()------>后置通知
             } catch (Exception e) {
              //.....exceptionadvice()----->例外通知
              e.printStackTrace();
             }finally{
              //.....finallyadvice()----->最終通知
             }
            }
               
            return null;
           }
           
           
          }
          //接口類的aop方法實(shí)現(xiàn)

          package cn.wyz.aop;

          import java.lang.reflect.InvocationHandler;
          import java.lang.reflect.Method;
          import java.lang.reflect.Proxy;

          import cn.wyz.service.impl.PersonServiceBean;

          public class JDKProxyFactory implements InvocationHandler {
           
           
           private Object targetObject;
           public Object creatProxyIntacce(Object targetObject){
            this.targetObject=targetObject;
            
            return Proxy.newProxyInstance(this.targetObject.getClass().getClassLoader(),
              this.targetObject.getClass().getInterfaces(), this);
           
           }
           
           
           

           public Object invoke(Object arg0, Method arg1, Object[] arg2)
             throws Throwable {
            PersonServiceBean bean=(PersonServiceBean)this.targetObject;
            Object result=null;
            
            if(bean.getUser()!=null){
             arg1.invoke(this.targetObject, arg2);
            }
               
            return result;
           }

          }


          posted on 2009-04-02 22:34 asiawang 閱讀(363) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章檔案

          友情連接

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 西吉县| 江城| 夏津县| 定兴县| 滕州市| 鄂州市| 甘南县| 天门市| 那坡县| 巴里| 镇安县| 祁东县| 伊宁市| 库尔勒市| 五家渠市| 耿马| 罗江县| 茶陵县| 都昌县| 芮城县| 六盘水市| 浏阳市| 广宗县| 资源县| 南汇区| 蓬安县| 北票市| 南阳市| 五寨县| 奈曼旗| 天门市| 宜兰县| 繁昌县| 双江| 三原县| 中宁县| 重庆市| 额敏县| 堆龙德庆县| 班戈县| 梧州市|