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
    ..:表示包、子孙包下所有类的所有方法
    *(..):其中*表示方法名,表示所有方法,后面括弧里面表示方法的参数,..表示任何参数
    
    原创:做时间的朋友
  • 相关阅读:
    十七、oracle 权限
    九、oracle 事务
    十六、oracle 索引
    十九、oracle pl/sql简介
    二十二、oracle pl/sql分类二 函数
    通过HttpURLConnection模拟post表单提交
    八、oracle 分页
    二十一、oracle pl/sql分类一 存储过程
    xStream框架操作XML、JSON
    二十、oracle pl/sql基础
  • 原文地址:https://www.cnblogs.com/PythonOrg/p/15411387.html
Copyright © 2011-2022 走看看