SpringAOP的切面执行顺序在Spring4和Spring5中有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringAOP的切面执行顺序在Spring4和Spring5中有啥区别?相关的知识,希望对你有一定的参考价值。

参考技术A

基于以上的切面逻辑,在 UserService#doProcess(long) 方法执行前后以及异常情况下的各个切面的执行顺序是怎样的呢?

执行下面测试代码,观察输出:

执行下面测试代码,观察输出:

在 Spring5 中各个切面的执行顺序如下:

环绕通知 @Around 的逻辑包裹着 @Before 、 @AfterReturing 、 @AfterThrowing 、 @Returing 这些切面。 @After 类比于 finally 块的代码一样在最后执行。

在 Spring4 中各个切面的执行顺序如下:

环绕通知 @Around 的逻辑 并不是 包裹着 @Before 、 @AfterReturing 、 @AfterThrowing 、 @Returing 这些切面。 @After 在 @AfterReturing 或 @AfterThrowing 之前执行。

以上是关于SpringAOP的切面执行顺序在Spring4和Spring5中有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

spring15----AOP之通知顺序

SpringAOP 面向切面编程-后置通知

SpringAOP 面向切面编程-前置通知

SpringAOP 面向切面编程-异常+最终通知(了解)

SpringAOP 面向切面编程-环绕通知(掌握)

Spring中切面详解(AOP)