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

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

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

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁(yè) :: 聯(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;
      }
    }
    /*
    對(duì)于上面的代碼需要說(shuō)明的是下面兩行代碼:
      Object result = methodInvocation.proceed();
      return result;
    整個(gè)程序的流程是這樣的:
      1,先是執(zhí)行在Object result = methodInvocation.proceed();前面的代碼;
      2,接著執(zhí)行Object result = methodInvocation.proceed();,它把執(zhí)行控制權(quán)交給了interceptor stack(攔截器棧)內(nèi)的下一個(gè)interceptor,如果沒(méi)有了就交給真正的業(yè)務(wù)方法;
      3,然后執(zhí)行return result;之前的代碼;
      4,最后執(zhí)行return result;,它把控制權(quán)交回它之上的interceptor,如果沒(méi)有了就退出interceptor stack。
    */
    posted on 2015-02-25 17:36 abin 閱讀(416) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲娇小性色xxxx| 国产成人亚洲精品狼色在线| 亚洲午夜视频在线观看| a级毛片高清免费视频| 国产成人综合亚洲亚洲国产第一页| 国产精品亚洲一区二区三区久久 | 永久免费精品影视网站| 波多野结衣一区二区免费视频| 亚洲av永久无码| 国产网站免费观看| 中文字幕日韩亚洲| 国产精品黄页免费高清在线观看| 在线免费观看国产| 亚洲欧洲综合在线| 毛片视频免费观看| 久久久久亚洲av毛片大| 国产精品美女免费视频观看| 国产亚洲人成网站在线观看| 免费人成在线观看视频高潮| 婷婷亚洲久悠悠色悠在线播放| 麻豆亚洲AV成人无码久久精品 | 男男AV纯肉无码免费播放无码| 天堂亚洲国产中文在线| 日韩免费观看一级毛片看看| 亚洲日本国产乱码va在线观看| 999久久久免费精品国产| 亚洲五月综合缴情在线观看| 色欲A∨无码蜜臀AV免费播| 亚洲成人影院在线观看| 亚洲日本中文字幕天天更新| 亚洲第一页日韩专区| 在线看片免费人成视频福利| 亚洲国产av高清无码| 四虎国产精品免费久久影院| 亚洲熟女综合一区二区三区| 亚洲av再在线观看 | 四虎最新永久免费视频| 亚洲天堂男人天堂| 日本最新免费不卡二区在线| 国产免费爽爽视频在线观看 | 91亚洲精品麻豆|