ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-28 13:03:05  阅读:141  来源: 互联网

标签:... 顺序 优先级 around After AfterThrowing AfterReturning 执行 before


注意!

从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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有