Spring AOP 通知 同一 Aspect 和不同 Aspect 中通知的执行顺序

AOP 的通知类型

同一切面内通知的执行顺序

AOP 的通知共五种,同一切面内我们直接按照执行顺序介绍:

1.环绕通知A
@Around
环绕通知比较特殊,在环绕通知里面我们需要手动调用目标函数,所以我们可以把环绕通知的执行顺序看作:环绕通知A(目标函数执行之前的语句) -> 目标函数 -> 环绕通知B(目标函数执行之后的语句)

2.前置通知
@Before

此处执行目标函数

3.环绕通知B
@Around

4.后置通知
@After

5.后置返回通知 / 后置异常通知
@AfterRunning / @AfterThrowing
假如目标函数没有发生异常,执行了 return 语句,则执行后置返回通知,如果发生异常则执行后置异常通知。严谨的说,如果抛出异常才执行行后置异常通知,若是函数内捕获异常,外部调用函数是感知不到的。

不同切面间的执行顺序

如果知道上面的执行顺序,不同 Aspect 切面的执行顺序很好理解。
首先根据 @Order 注解,或者 xml 中的顺序,先进入到顺序靠前的切面。
然后我们只需要把上面执行顺序中执行目标函数位置替换为第二个切面的执行顺序,同理,第三个切面的执行位置,就是把第二个切面的执行顺序里面执行目标函数替换即可,以此类推。

需要注意的是异常的抛出,我们的环绕通知是有能力捕获目标函数异常并且不抛出的,如果捕获并且不抛出,会触发后置返回通知而不会触发后置异常通知,同时也会影响其他切面的执行。所以我们捕获处理后,还要抛出去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值