Spring-AOP链式调用@After、@Before、@AfterReturning、@Around、@AfterThrowing

代理对象调用流程

在这里插入图片描述

Before

在某连接点(JoinPoint)——核心代码(类或者方法)之前执行的通知,但这个通知不能阻止连接点前的执行。为啥不能阻止线程进入核心代码呢?因为@Before注解的方法入参不能传ProceedingJoinPoint,而只能传入JoinPoint。要知道从aop走到核心代码就是通过调用ProceedingJionPoint的proceed()方法。而JoinPoint没有这个方法

@After

后通知(After advice) :当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)

@AfterReturning

返回后通知(After return advice) :在某连接点正常完成后执行的通知,不包括抛出异常的情况

@Around

环绕通知(Around advice) :包围一个连接点的通知,类似Web中Servlet规范中的Filter的doFilter方法。可以在方法的调用前后完成自定义的行为,也可以选择不执行。这时aop的最重要的,最常用的注解。用这个注解的方法入参传的是ProceedingJionPoint pjp,可以决定当前线程能否进入核心方法中——通过调用pjp.proceed();

@AfterThrowing

抛出异常后通知(After throwing advice) : 在方法抛出异常退出时执行的通知。

流程

一个方法被一个Aspect拦截

在这里插入图片描述
在这里插入图片描述

一个方法被多个Aspect拦截

执行顺序是未知的,需要指定Order才能确定优先级

  1. 实现org.springframework.core.Ordered接口,实现它的getOrder()方法
  2. 给aspect添加@Order注解,该注解全称为:org.springframework.core.annotation.Order

值越小的Aspect优先执行

在这里插入图片描述

https://blog.csdn.net/zhanglf02/article/details/78132304
https://blog.csdn.net/rainbow702/article/details/52185827

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值