Spring注解驱动开发-part5基于注解的AOP使用

啥是AOP

指在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式

使用AOP

前置通知@Before:在目标方法运行之前运行
后置通知@After:在目标方法运行之后运行(无论是正常结束还是异常结束都会运行)
返回通知@AfterReturning:在目标方法【正常返回】之后运行
异常通知@AfterThrowing:在目标方法运行出现异常之后运行
环绕通知@Around:相当于动态代理(joinPoint.procced)

- 增加通知方法到切入点:

Spring注解驱动开发-part5基于注解的AOP使用

- 提取切入点:

Spring注解驱动开发-part5基于注解的AOP使用

- 若外部类使用此切入点,则应该使用该方法的全类名:

Spring注解驱动开发-part5基于注解的AOP使用

- 将切面类和业务逻辑类,都加入到容器中:

Spring注解驱动开发-part5基于注解的AOP使用

- 增加@Aspect注解,告诉Spring这是切面类

Spring注解驱动开发-part5基于注解的AOP使用

- 开启基于AspectJ的自动代理

Spring注解驱动开发-part5基于注解的AOP使用

- 传入JoinPoint参数,来接收参数以及函数签名信息:

Spring注解驱动开发-part5基于注解的AOP使用

- 用Returning指定参数名,接收返回结果

Spring注解驱动开发-part5基于注解的AOP使用

- 用Throwing指定参数名,接收异常信息

Spring注解驱动开发-part5基于注解的AOP使用

  • 附:JoinPoint必须出现在参数列表的第一位,不然无法识别

基于注解的AOP分为三步:

  1. 将业务逻辑和切面类加入容器,对应的切面类要增加@Apsect注解
  2. 切面类上的每一个通知方法上标注注解(@Before @After等),告诉Spring何时运行切入点表达式
  3. 开启基于注解的AOP模式:@EnableAspectJAutoProxy