• 相同切入点的抽取


    1.相同切入点的抽取

    抽取前:

    package com.spring.spring5.annotaion;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.*;
    import org.springframework.stereotype.Component;
    
    //增强的类
    @Aspect//表示生成代理对象
    @Component
    public class UserProxy {
    
        //前置通知
        @Before(value = "execution(* com.spring.spring5.annotaion.User.add(..))")//表示作为前置通知
        public void before(){
            System.out.println("Before......");
        }
    
        //最终通知,不管有没有异常在方法之后都执行
        @After(value = "execution(* com.spring.spring5.annotaion.User.add(..))")
        public void after(){
            System.out.println("After......");
        }
    
        //后置通知(返回通知),方法无异常结束时执行
        @AfterReturning(value = "execution(* com.spring.spring5.annotaion.User.add(..))")
        public void afterReturning(){
            System.out.println("AfterReturning......");
        }
    
        //异常通知,add()有异常时才会执行
        @AfterThrowing(value = "execution(* com.spring.spring5.annotaion.User.add(..))")
        public void afterThrowing(){
            System.out.println("AfterThrowing......");
        }
    
        //环绕通知,在方法之前和之后执行
        @Around("execution(* com.spring.spring5.annotaion.User.add(..))")
        public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
            System.out.println("Around之前......");
            proceedingJoinPoint.proceed();
            System.out.println("Around之后......");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44

    抽取后:

    package com.spring.spring5.annotaion;
    
    import org.aspectj.lang.ProceedingJoinPoint;
    import org.aspectj.lang.annotation.*;
    import org.springframework.stereotype.Component;
    
    //增强的类
    @Aspect//表示生成代理对象
    @Component
    public class UserProxy {
        //相同切入点抽取
        @Pointcut("execution(* com.spring.spring5.annotaion.User.add(..))")
        public void pointdemo() {
    
        }
    
        //前置通知
        @Before(value = "pointdemo()")//表示作为前置通知
        public void before(){
            System.out.println("Before......");
        }
    
        //最终通知,不管有没有异常在方法之后都执行
        @After(value = "pointdemo()")
        public void after(){
            System.out.println("After......");
        }
    
        //后置通知(返回通知),方法无异常结束时执行
        @AfterReturning(value = "pointdemo()")
        public void afterReturning(){
            System.out.println("AfterReturning......");
        }
    
        //异常通知,add()有异常时才会执行
        @AfterThrowing(value = "pointdemo()")
        public void afterThrowing(){
            System.out.println("AfterThrowing......");
        }
    
        //环绕通知,在方法之前和之后执行
        @Around("pointdemo()")
        public void around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
            System.out.println("Around之前......");
            proceedingJoinPoint.proceed();
            System.out.println("Around之后......");
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    两者效果一致

  • 相关阅读:
    windows11录屏功能详解,记录你的精彩时刻
    【Keras】AveragePooling1D层和GlobalAveragePooling1D层
    day06DNS复习演示、IIS之WEB服务器、FTP服务器
    直流有刷电机驱动基于STM32F302R8+X-NUCLEO-IHM07M1(二)
    [二进制学习笔记]LibcSearcher报错Requirements for download
    RHCSA 文件的上传下载(Linux-Windows)
    ssm和springboot的区别
    Redis之入门学习
    电商购物平台的核心业务是什么?购物车如何进行测试?
    作为一名软件测试工程师,需要具备哪些能力?
  • 原文地址:https://blog.csdn.net/weixin_46245201/article/details/125524030