1、创建类,在类里面定义方法
    image.png

    2、创建增强类(编写增强逻辑)
    ①在增强类里面,创建方法,让不同方法代表不同的通知类型
    image.png

    3、进行通知的配置
    ①在spring配置文件中,开启注解扫描
    image.png
    ②使用注解创建User和UserProxy对象
    image.png
    image.png
    ③在增强类上面添加注解@Aspect
    image.png
    ④在spring配置文件中开启生成代理对象

    4、配置不同类型的通知
    ①在增强类的里面,在作为通知方法上面添加通知类型注解,使用切入点表达式配置
    image.png

    image.png

    image.png

    *测试**
    image.png
    image.png

    1. package com.atguigu.spring5.AOPanno;
    2. import org.aspectj.lang.ProceedingJoinPoint;
    3. import org.aspectj.lang.annotation.After;
    4. import org.aspectj.lang.annotation.AfterReturning;
    5. import org.aspectj.lang.annotation.AfterThrowing;
    6. import org.aspectj.lang.annotation.Around;
    7. import org.aspectj.lang.annotation.Aspect;
    8. import org.aspectj.lang.annotation.Before;
    9. import org.springframework.stereotype.Component;
    10. /**
    11. * @author Dxkstart
    12. * @create 2021-10-29-19:04
    13. */
    14. //增强的类
    15. @Component
    16. @Aspect //生成代理对象
    17. public class UserProxy {
    18. //前置通知
    19. //@before注解表示作为前置通知
    20. @Before(value = "execution(* com.atguigu.spring5.AOPanno.User.add(..))")
    21. public void before() {
    22. System.out.println("前置通知before........");
    23. }
    24. //最终通知
    25. //方法之后执行
    26. @After(value = "execution(* com.atguigu.spring5.AOPanno.User.add(..))")
    27. public void after() {
    28. System.out.println("最终通知after......");
    29. }
    30. //后置通知(返回通知)
    31. //方法返回了值之后执行
    32. @AfterReturning(value = "execution(* com.atguigu.spring5.AOPanno.User.add(..))")
    33. public void afterReturning() {
    34. System.out.println("后置通知afterReturning.......");
    35. }
    36. //异常通知
    37. @AfterThrowing(value = "execution(* com.atguigu.spring5.AOPanno.User.add(..))")
    38. public void AfterThrowing() {
    39. System.out.println("异常通知AfterThrowing.....");
    40. }
    41. //环绕通知
    42. @Around(value = "execution(* com.atguigu.spring5.AOPanno.User.add(..))")
    43. public void Around(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {
    44. System.out.println("环绕之前........");
    45. //被增强的方法执行
    46. proceedingJoinPoint.proceed();
    47. System.out.println("环绕之后........");
    48. }
    49. }