zoukankan      html  css  js  c++  java
  • 自定义AOP,实现自动捕获方法的执行时间

    1.自定义Aspect

    @Component
    @Aspect
    public class JournalServiceAspect {
    
        private static final Logger logger = LoggerFactory.getLogger(JournalServiceAspect.class);
    
        private final String POINT_CUT = "execution(* delta.config.controller..*(..))";
    
        @Pointcut(POINT_CUT)
        private void pointcut(){}
    
        private ThreadLocal<Long> beginTime = new ThreadLocal<>();
    
        @Before(value = POINT_CUT)
        public void before(JoinPoint joinPoint){
    //        logger.info("前置通知");
            beginTime.set(System.currentTimeMillis());
        }
    
        @After(value = POINT_CUT)
        public void doAfterAdvice(JoinPoint joinPoint){
            String className = joinPoint.getSignature().getDeclaringType().getName();
            String methodName = joinPoint.getSignature().getName();
            logger.info("捕获 {}#{} cost time : {}ms",className,methodName,System.currentTimeMillis() - beginTime.get());
        }
    }
    

    2.springboot aop的execution表达式详解

    切入点表达式说明

    * delta.config.controller..*(..)
    

    表达式说明

    表达式说明
    *:表示返回类型,*表示所有的类型
    delta.config.controller:表示要拦截的包名,此处设置controller
    ..:表示包、子孙包下所有类的所有方法
    *(..):其中*表示方法名,表示所有方法,后面括弧里面表示方法的参数,..表示任何参数
    
    原创:做时间的朋友
  • 相关阅读:
    课后作业之评价
    课堂作业之寻找水王
    构建之法阅读笔记04
    课下作业
    构建之法阅读笔记03
    学习进度条九
    学习进度条八
    冲刺第五天
    构建之法阅读笔记02
    冲刺第四天
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/15411387.html
Copyright © 2011-2022 走看看