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
    ..:表示包、子孙包下所有类的所有方法
    *(..):其中*表示方法名,表示所有方法,后面括弧里面表示方法的参数,..表示任何参数
    
    原创:做时间的朋友
  • 相关阅读:
    Django_Setings
    python之event【事件】
    python之递归锁【Rlock】
    python之信号量【Semaphore】
    python的线程锁
    python的多线程和守护线程
    python的错误类型和异常处理
    python之ftp作业【还未完成】
    python之socket运用之传输大文件
    python之socket运用之执行命令
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/15411387.html
Copyright © 2011-2022 走看看