其他分享
首页 > 其他分享> > @Before,@After,@AfterReturning,@AfterThrowing执行顺序

@Before,@After,@AfterReturning,@AfterThrowing执行顺序

作者:互联网

注意!

从Spring5.2.7开始,在相同@Aspect类中,通知方法将根据其类型按照从高到低的优先级进行执行:@Around,@Before ,@After,@AfterReturning,@AfterThrowing。

顺序为(类似于栈的执行顺序,进入时高优先级先执行,退出时低优先级先执行)

  1. around before...
  2. before...
  3. add...
  4. afterReturning...
  5. after...
  6. around after...

 

 

在Spring5.2.7之前,Spring AOP 遵循与 AspectJ 相同的优先级规则来确定通知执行的顺序。 最高优先级的建议首先“在进入的路上”运行(因此,给定两条之前的建议,优先级最高的一条首先运行)。 从连接点“退出”时,优先级最高的通知最后运行(因此,给定两条后通知,具有最高优先级的一条将运行第二个)

顺序为(类似于队列的执行顺序,进入时高优先级先执行,退出时也是高优先级先执行)

  1. around before...
  2. before...
  3. add...
  4. around after...
  5. after...
  6. afterReturning...

 

 

下图展示的是Spring5.2.7之前版本的执行顺序

一个方法只被一个Aspect类拦截

在一个方法只被一个aspect类拦截时,aspect类内部的 advice 将按照以下的顺序进行执行:

正常情况: 
one-ok

异常情况: 
one-exception

同一个方法被多个Aspect类拦截

 

标签:...,顺序,优先级,around,After,AfterThrowing,AfterReturning,执行,before
来源: https://www.cnblogs.com/Shinki/p/16528243.html