zoukankan      html  css  js  c++  java
  • aop计算方法耗时

    package necs.omms.common.aop;

    import lombok.extern.apachecommons.CommonsLog;
    import org.apache.commons.lang.time.StopWatch;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.Signature;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.aspectj.lang.annotation.Before;
    import org.aspectj.lang.annotation.Pointcut;
    import org.springframework.stereotype.Component;

    @Component
    @Aspect
    @CommonsLog
    public class PerformanceMonitor {
    private static Log log = LogFactory.getLog(PerformanceMonitor.class);


    /**
    * A join point is in the controller layer if the method is
    * modified by public and defined in a type in the
    * com.shawn.service package or any sub-package under that
    * and modified by public.execution(* com.baobaotao..*(..))l
    */
    @Pointcut("execution( * necs.omms.controller..*(..))")
    private void controllerLayer() {
    }

    /**
    * Monitor the elapsed time of method on controller layer, in
    * order to detect performance problems as soon as possible.
    * If elapsed time > 1 s, log it as an error. Otherwise, log it
    * as an info.
    */
    @Around("controllerLayer()")
    public Object monitorElapsedTime(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
    // Timing the method in controller layer
    StopWatch stopWatch = new StopWatch();
    stopWatch.start();
    Object result = proceedingJoinPoint.proceed();
    stopWatch.stop();

    // Log the elapsed time
    double elapsedTime = stopWatch.getTime() / 1000;
    Signature signature = proceedingJoinPoint.getSignature();
    String infoString = "[" + signature.toShortString() + "][Elapsed time: " + elapsedTime + " s]";
    if (elapsedTime > 1) {
    log.error(infoString + "[Note that it's time consuming!]");
    } else {
    log.info(infoString);
    }

    // Return the result
    return result;
    }

    @Before(value = "controllerLayer()")
    public void doBefore(){
    System.out.println("-------------@BEFORE------------");
    }

    }
  • 相关阅读:
    react redux 使用
    github 退出和别人共同开发的仓库
    在react package.json中配置代理解决跨域
    禁止浏览器sources下webpack文件 显示源码
    redux connect 装饰器配置和安装
    Odoo 在action的domain和context中使用self.env
    odoo 字段后面添加button按钮,页签tree再加group显示字段
    Odoo -- 开发者模式创建的群组、动作没有xml id怎么办
    Mac必备神器Homebrew mac下镜像飞速安装Homebrew教程
    Vue -- keyup、watch、computed、nrm的安装
  • 原文地址:https://www.cnblogs.com/wlhebut/p/8182206.html
Copyright © 2011-2022 走看看