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

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


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

          常用鏈接

          留言簿(3)

          隨筆檔案

          文章檔案

          友情連接

          搜索

          •  

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 永济市| 普安县| 苏尼特右旗| 霍城县| 黑河市| 海原县| 上虞市| 泸水县| 遵化市| 芜湖县| 潜山县| 通江县| 白玉县| 陆河县| 盐亭县| 黄龙县| 凯里市| 招远市| 怀宁县| 大兴区| 凉山| 名山县| 禹城市| 眉山市| 象山县| 深州市| 长白| 确山县| 普兰店市| 西和县| 济南市| 洱源县| 富锦市| 太白县| 本溪市| 淮北市| 无为县| 涡阳县| 固镇县| 白山市| 法库县|