TECH NOTES / Java 与 Spring

Spring AOP:通知的执行顺序

原笔记 2022-02-23 · 整理于 2026-10-05

整理 Spring AOP 多个切面与通知的调用顺序,结合图示理解嵌套执行。

版本说明:通知顺序的结论需结合 Spring 版本、切面优先级及是否抛出异常判断。图中是原笔记的执行示意;同一切面内相同类型的多个通知不应依赖源码声明顺序。

通知的执行顺序

Advice :通知,在切面的某个特定的连接点(Join point)上执行的操作。

通知分为:

前置通知: 在原来方法之前执行。

后置通知: 在原来的方法之后执行。特点:可以得到被增强方法的返回值。

环绕通知: 在方法之前和方法之后执行。

异常通知: 目标方法出现异常执行,如果方法没有异常,不会执行。特点:可以获得异常的信息。

最终通知: 指的是无论是否有异常,总是被执行。

Spring--AOP、通知的执行顺序配图 1

总结

spring aop就是一个同心圆,要执行的方法为圆心,最外层的order最小。从最外层按照AOP1、AOP2的顺序依次执行doAround方法,doBefore方法。然后执行method方法,最后按照AOP2、AOP1的顺序依次执行doAfter、doAfterReturn方法。也就是说对多个AOP来说,先before的,一定后after。

Spring--AOP、通知的执行顺序配图 2

一个切面通知的顺序

Spring--AOP、通知的执行顺序配图 3

两个切面通知的顺序

Spring--AOP、通知的执行顺序配图 4

参考:

Spring--AOP、通知的执行顺序

文章配图