@Before,@After,@AfterReturning,@AfterThrowing执行顺序
作者:互联网
注意!
从Spring5.2.7开始,在相同@Aspect类中,通知方法将根据其类型按照从高到低的优先级进行执行:@Around,@Before ,@After,@AfterReturning,@AfterThrowing。
顺序为(类似于栈的执行顺序,进入时高优先级先执行,退出时低优先级先执行)
- around before...
- before...
- add...
- afterReturning...
- after...
- around after...
在Spring5.2.7之前,Spring AOP 遵循与 AspectJ 相同的优先级规则来确定通知执行的顺序。 最高优先级的建议首先“在进入的路上”运行(因此,给定两条之前的建议,优先级最高的一条首先运行)。 从连接点“退出”时,优先级最高的通知最后运行(因此,给定两条后通知,具有最高优先级的一条将运行第二个)
顺序为(类似于队列的执行顺序,进入时高优先级先执行,退出时也是高优先级先执行)
- around before...
- before...
- add...
- around after...
- after...
- afterReturning...
下图展示的是Spring5.2.7之前版本的执行顺序
一个方法只被一个Aspect类拦截
在一个方法只被一个aspect类拦截时,aspect类内部的 advice 将按照以下的顺序进行执行:
正常情况:
异常情况:
同一个方法被多个Aspect类拦截
标签:...,顺序,优先级,around,After,AfterThrowing,AfterReturning,执行,before 来源: https://www.cnblogs.com/Shinki/p/16528243.html