posts - 17,  comments - 12,  trackbacks - 0

          //無接口類的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 閱讀(365) 評(píng)論(0)  編輯  收藏

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


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

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章檔案

          友情連接

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          主站蜘蛛池模板: 文昌市| 柯坪县| 葫芦岛市| 浦城县| 姜堰市| 东乌珠穆沁旗| 郑州市| 黄浦区| 平江县| 青铜峡市| 文昌市| 年辖:市辖区| 清远市| 论坛| 西盟| 石台县| 筠连县| 白玉县| 保靖县| 武陟县| 武穴市| 湘乡市| 新建县| 图们市| 金乡县| 临高县| 辉南县| 潞西市| 延津县| 道真| 贵定县| 蚌埠市| 延安市| 青阳县| 错那县| 奎屯市| 五河县| 博爱县| 勐海县| 靖州| 根河市|