Lecture14-切面-[实验03]重用切入点表达式

文章目录

    [toc]

    单词词性音标含义
    PointCutn./pɔɪnt kʌt/切点(AOP中定义哪些JoinPoint会被拦截的条件,用于精确指定需要增强的方法或位置)
    Aroundprep. / adj./əˈraʊnd/环绕(AOP中的环绕通知,用@Around注解标识,可在目标方法执行前后自定义增强逻辑,且能控制目标方法是否执行)

    Lecture14-切面-[实验03]重用切入点表达式

    1、声明

    在一处声明切入点表达式之后,其他有需要的地方引用这个切入点表达式。易于维护,一处修改,处处生效。声明方式如下:

        // 切入点表达式重用
        @Pointcut("execution(public int com.atguigu.aop.api.Calculator.add(int,int)))")
        public void declarPointCut() {}
    

    2、同一个类内部引用

        @Before(value = "declarPointCut()")
        public void printLogBeforeCoreOperation(JoinPoint joinPoint) {
    

    3、在不同类中引用

    @Around(value = "com.atguigu.spring.aop.aspect.LogAspect.declarPointCut()")
    public Object roundAdvice(ProceedingJoinPoint joinPoint) {
    

    4、集中管理

    而作为存放切入点表达式的类,可以把整个项目中所有切入点表达式全部集中过来,便于统一管理:

    @Component
    public class AtguiguPointCut {
        
        @Pointcut(value = "execution(public int *..Calculator.sub(int,int))")
        public void atguiguGlobalPointCut(){}
        
        @Pointcut(value = "execution(public int *..Calculator.add(int,int))")
        public void atguiguSecondPointCut(){}
        
        @Pointcut(value = "execution(* *..*Service.*(..))")
        public void transactionPointCut(){}
    }
    
    end