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

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

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

    少年阿賓

    那些青春的歲月

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      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,先是執行在Object result = methodInvocation.proceed();前面的代碼;
      2,接著執行Object result = methodInvocation.proceed();,它把執行控制權交給了interceptor stack(攔截器棧)內的下一個interceptor,如果沒有了就交給真正的業務方法;
      3,然后執行return result;之前的代碼;
      4,最后執行return result;,它把控制權交回它之上的interceptor,如果沒有了就退出interceptor stack。
    */
    posted on 2015-02-25 17:36 abin 閱讀(415) 評論(0)  編輯  收藏

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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 免费萌白酱国产一区二区| 免费av片在线观看网站| 中文字幕无码免费久久99| 久久亚洲精品成人av无码网站| a级毛片免费观看在线| www.亚洲色图| 美女黄网站人色视频免费| 国产亚洲精品免费| 十八禁的黄污污免费网站| 久久久久亚洲av成人无码电影| 国产精品内射视频免费| 中文字幕一精品亚洲无线一区| 三年片免费观看大全国语| 亚洲激情中文字幕| 午夜性色一区二区三区免费不卡视频| 亚洲另类春色校园小说| 亚洲宅男天堂在线观看无病毒| 精品国产福利尤物免费| 久久精品国产亚洲网站| 18禁美女黄网站色大片免费观看| 亚洲国产视频网站| 免费人成视频在线观看视频| 亚洲视频在线免费| 亚洲福利在线观看| 在线观看特色大片免费视频 | 在线亚洲午夜片AV大片| 麻豆国产VA免费精品高清在线| 美女被爆羞羞网站免费| 亚洲av永久无码精品秋霞电影影院| 2022久久国产精品免费热麻豆| 亚洲国产情侣一区二区三区| 国产自产拍精品视频免费看| 久久久久久国产a免费观看不卡| 中文字幕亚洲色图| 俄罗斯极品美女毛片免费播放| baoyu777永久免费视频| 亚洲一区免费在线观看| 亚洲熟女乱综合一区二区| 狼群影院在线观看免费观看直播| 亚洲av日韩aⅴ无码色老头| 国产av无码专区亚洲av果冻传媒|