zoukankan      html  css  js  c++  java
  • 注解 记录方法执行时间


    @GetMapping("/getAllRegion")
    @StopWatchTime
    public ResultBody getAllRegion() {

    return ResultBody.success();
    }




    @Retention(RetentionPolicy.RUNTIME)
    @Target({METHOD})
    public @interface StopWatchTime {
    String value() default "";
    //时间单位 s || ms
    String company() default "ms";
    }


    import org.apache.commons.lang3.StringUtils;
    import org.apache.commons.lang3.time.StopWatch;
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.Around;
    import org.aspectj.lang.annotation.Aspect;
    import org.springframework.stereotype.Component;

    @Aspect
    @Component
    @Slf4j
    public class StopWatchTimeAdvice {

    /*@Pointcut("@annotation(com.shopcc.bmg.compass.aspect.StopWatchTime)")
    public void methodPointcut() {}*/

    //@Around("methodPointcut() && @annotation(stopWatchTime)")
    @Around("@annotation(stopWatchTime)")
    public Object invoke(ProceedingJoinPoint thisJoinPoint, StopWatchTime stopWatchTime) throws Throwable {

    log.info("Annotation company -->{}",stopWatchTime.company());

    //方法名
    String methodName = thisJoinPoint.getSignature().getName();
    //参数
    Object[] args = thisJoinPoint.getArgs();

    StopWatch stopwatch = StopWatch.createStarted();

    //执行目标方法
    Object object = thisJoinPoint.proceed();

    stopwatch.stop();

    log.info("method name :{}({}) execute time :{}:{}",
    methodName,args, stopwatch.getTime(StringUtils.equals(stopWatchTime.company(),"ms") ? TimeUnit.MILLISECONDS : TimeUnit.SECONDS),
    stopWatchTime.company());

    return object;
    }
    }
    能力是有限的,努力是无限的。
  • 相关阅读:
    说下vue工程中代理配置proxy
    说一下登陆页面的实现逻辑
    $router和router区别
    iframe中涉及父子页面跨域问题
    浅析闭包
    用户注册之短信验证
    vue.js(三)
    vue.js(二)
    vue.js(一)
    批量更改会员权限
  • 原文地址:https://www.cnblogs.com/jiahaoJAVA/p/14873928.html
Copyright © 2011-2022 走看看