• Spring-AOP(切面的优先级&&&重用切点表达式)


    可以使用@Order 注解指定切面的优先级,值越小优先级越高

    切面一:

    /*
    * 可以使用@Order 注解指定切面的优先级,值越小优先级越高
    * */
    @Order(2)
    @Component
    @Aspect
    public class LoggingAspect {
        /**
         * 在每一个接口的实现类的每一个方法开始之前执行一段代码
         */
    
        @Before("execution(public int com.atguigu.spring.aop.ArithmeticCalculator.* (..))")
        public void beforeMethod(JoinPoint joinPoint){
            String methodName = joinPoint.getSignature().getName();
            Object[] args = joinPoint.getArgs();
    
            System.out.println("The method "+methodName+" begins with "+ Arrays.asList(args));
        }
    }

    切面二:

    @Order(1)
    @Aspect
    @Component
    public class VlidationAspect {
    
        @Before("execution(public int com.atguigu.spring.aop.ArithmeticCalculator.* (..))")
        public void validateArgs(JoinPoint joinPoint){
            System.out.println("------->validate:" + Arrays.asList(joinPoint.getArgs()));
        }
    }

    切入点表达式的引用:

    切面一:

    ========引用========

    该类中引用:方法名

    @Order(2)
    @Component
    @Aspect
    public class LoggingAspect {
    
        /*
        * 定义一个方法,用于声明切入点表达式。一般地,该方法中不需要添入其他的代码。
        * 使用@Pointcut 来声明切入点表达式。
        * 后面的其他通知直接使用方法名来引用当前的切入点表达式。
        * */
        @Pointcut("execution(public int com.atguigu.spring.aop.ArithmeticCalculator.* (..))")
        public void declareJoinPointExpression(){
    
        }
    
    
        /**
         * 在每一个接口的实现类的每一个方法开始之前执行一段代码
         */
    
        @Before("declareJoinPointExpression()")
        public void beforeMethod(JoinPoint joinPoint){
            String methodName = joinPoint.getSignature().getName();
            Object[] args = joinPoint.getArgs();
    
            System.out.println("The method "+methodName+" begins with "+ Arrays.asList(args));
        }
    
    }

    切面二:

    ========引用========

    同一包下的:类名.方法名

    不同包下的:包名.类名.方法名

    @Order(1)
    @Aspect
    @Component
    public class VlidationAspect {
    
        @Before("com.atguigu.spring.aop.LoggingAspect.declareJoinPointExpression()")
        public void validateArgs(JoinPoint joinPoint){
            System.out.println("------->validate:" + Arrays.asList(joinPoint.getArgs()));
        }
    }
  • 相关阅读:
    python 产生token及token验证
    Django中间件
    docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
    Docker 容器镜像删除
    linux查找nginx所在目录
    nginx启动访问
    nginx安装【linux下安装】
    QPS计算
    Jmeter压测问题_Non HTTP response code: org.apache.http.conn.ConnectTimeoutException
    Jmeter压测问题_Non HTTP response code: java.net.ConnectException
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/12025282.html
Copyright © 2020-2023  润新知