posts - 17,  comments - 12,  trackbacks - 0

          //無接口類的aop方法實現
          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;//環繞通知
            
            if(bean.getUser()!=null){
             //......advice()---->前置通知
             try {
              result=arg3.invoke(this.targetObject, arg2);
              
              //..........afteradvice()------>后置通知
             } catch (Exception e) {
              //.....exceptionadvice()----->例外通知
              e.printStackTrace();
             }finally{
              //.....finallyadvice()----->最終通知
             }
            }
               
            return null;
           }
           
           
          }
          //接口類的aop方法實現

          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) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章檔案

          友情連接

          搜索

          •  

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 阿图什市| 佳木斯市| 静海县| 托克托县| 肥城市| 渝中区| 囊谦县| 马鞍山市| 台东县| 玉门市| 永兴县| 吉首市| 安乡县| 宜春市| 凤城市| 观塘区| 从化市| 阿巴嘎旗| 喀什市| 黄梅县| 辉县市| 大同市| 枝江市| 门头沟区| 理塘县| 陵水| 四平市| 长岛县| 枝江市| 拉萨市| 唐海县| 奉化市| 汶川县| 巴塘县| 林周县| 雷州市| 惠来县| 武夷山市| 丹阳市| 克什克腾旗| 宁津县|