<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
    package com.cp.common.aop;
    import java.lang.reflect.Method;
    import org.aopalliance.intercept.MethodInterceptor;
    import org.aopalliance.intercept.MethodInvocation;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    public class TimeHandler
      implements MethodInterceptor
    {
      private static final Log log = LogFactory.getLog(TimeHandler.class);
      private int error;
      private int warn;
      private int info;
      public TimeHandler()
      {
        this.error = 200;
        this.warn = 100;
        this.info = 50;
      }
      public Object invoke(MethodInvocation methodInvocation)
        throws Throwable
      {
        long procTime = System.currentTimeMillis();
        try {
          Object result = methodInvocation.proceed();
         return result;
        }
        finally {
          procTime = System.currentTimeMillis() - procTime;
          String msg = "Process method " + methodInvocation.getMethod().getName() + " successful! Total time: " + procTime + " milliseconds!";
          if (procTime > this.error)
            if (log.isErrorEnabled()) log.error(msg);
          else if (procTime > this.warn)
            if (log.isWarnEnabled()) log.warn(msg);
          else if (procTime > this.info)
            if (log.isInfoEnabled()) log.info(msg);
          else if (log.isDebugEnabled()) log.debug(msg);
        }
      }
      public void setError(int error)
      {
        this.error = error;
      }
      public void setWarn(int warn)
      {
        this.warn = warn;
      }
      public void setInfo(int info)
      {
        this.info = info;
      }
    }
    /*
    對于上面的代碼需要說明的是下面兩行代碼:
      Object result = methodInvocation.proceed();
      return result;
    整個程序的流程是這樣的:
      1,先是執(zhí)行在Object result = methodInvocation.proceed();前面的代碼;
      2,接著執(zhí)行Object result = methodInvocation.proceed();,它把執(zhí)行控制權(quán)交給了interceptor stack(攔截器棧)內(nèi)的下一個interceptor,如果沒有了就交給真正的業(yè)務(wù)方法;
      3,然后執(zhí)行return result;之前的代碼;
      4,最后執(zhí)行return result;,它把控制權(quán)交回它之上的interceptor,如果沒有了就退出interceptor stack。
    */
    posted on 2015-02-25 17:36 abin 閱讀(416) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 四只虎免费永久观看| 亚洲AⅤ优女AV综合久久久| 亚洲熟妇无码八V在线播放| 日韩一级视频免费观看| 男女一边桶一边摸一边脱视频免费| 久久精品国产亚洲一区二区| 亚洲成人免费在线观看| 99亚洲精品卡2卡三卡4卡2卡| 国产精品V亚洲精品V日韩精品| 久久免费看黄a级毛片| 美女羞羞免费视频网站| 久久亚洲一区二区| 国产精品久久香蕉免费播放| 三级网站在线免费观看| 亚洲an日韩专区在线| 亚洲午夜国产精品无码老牛影视 | 亚洲AV无码日韩AV无码导航| 日韩免费一区二区三区在线 | 色拍自拍亚洲综合图区| 国产大片91精品免费看3| 免费人成在线观看网站品爱网 | 亚洲啪啪综合AV一区| 日韩高清在线高清免费| 三年片在线观看免费观看大全一| 亚洲av成本人无码网站| 亚洲成人福利网站| 亚洲日产韩国一二三四区| 日韩免费视频播播| 99久久99热精品免费观看国产| 无码毛片一区二区三区视频免费播放 | 国产中文字幕在线免费观看| 欧美色欧美亚洲另类二区| 亚洲精品日韩中文字幕久久久| 亚洲欧洲日本在线| 日本成人免费在线| 久久经典免费视频| 99精品视频在线免费观看 | 一本色道久久88—综合亚洲精品| 久久香蕉国产线看观看亚洲片| 亚洲精品无码专区2| 日韩成全视频观看免费观看高清|