SpringAOP的坑

AOP中几种常见的通知类型及其基本作用:

  • @Before:前置通知,在目标方法执行之前执行。
  • @After:后置通知,无论方法执行结果如何(包括异常),都会在目标方法执行之后执行。
  • @AfterReturning:返回后通知,在目标方法正常结束后执行,但如果方法抛出异常则不会执行。
  • @AfterThrowing:异常通知,在目标方法抛出异常时执行。
  • @Around:环绕通知,可以在目标方法执行前后进行自定义操作,甚至可以决定是否继续执行目标方法

Spring4与Spring5中AOP执行顺序的区别

Spring4中的AOP执行顺序

  • 正常执行顺序:
    1. @Before(前置通知)
    2. 目标方法执行
    3. @After(后置通知)
    4. @AfterReturning(返回后通知)
  • 异常执行顺序:
    1. @Before(前置通知)
    2. 目标方法执行(抛出异常)
    3. @After(后置通知)
    4. @AfterThrowing(异常通知)

如果配置了环绕通知(@Around),则环绕通知的前置处理会先于@Before执行,环绕通知的后置处理也会先于@After、@AfterReturning、@AfterThrowing执行。

Spring5中的AOP执行顺序

在Spring5中,AOP的执行顺序发生了一些变化,主要体现在@AfterReturning和@After的执行顺序上:

  • 正常执行顺序:
    1. @Before(前置通知)
    2. 目标方法执行
    3. @AfterReturning(返回后通知)
    4. @After(后置通知)
  • 异常执行顺序:
    1. @Before(前置通知)
    2. 目标方法执行(抛出异常)
    3. @AfterThrowing(异常通知)
    4. @After(后置通知)

如果配置了环绕通知(@Around),则环绕通知的执行顺序仍然是最先执行其前置处理,然后是目标方法执行,接着是其他通知(@AfterReturning、@AfterThrowing、@After),最后是环绕通知的后置处理。

相关推荐
三月七(爱看动漫的程序员)1 小时前
模型/O功能之提示词模板
java·前端·javascript·人工智能·语言模型·langchain·prompt
LiuYuHani2 小时前
Spring Boot面试题
java·spring boot·后端
LUCIAZZZ2 小时前
弄懂Runable,Callable,Future之间的关系
java·开发语言
RainbowSea2 小时前
九. Redis 持久化-AOF(详细讲解说明,一个配置一个说明分析,步步讲解到位 2)
java·redis·nosql
电脑玩家粉色男孩2 小时前
八、Spring Boot 日志详解
java·spring boot·后端
ChinaRainbowSea3 小时前
八. Spring Boot2 整合连接 Redis(超详细剖析)
java·数据库·spring boot·redis·后端·nosql
小咕聊编程3 小时前
【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发
java·spring boot·小程序
某个默默无闻奋斗的人4 小时前
三傻排序的比较(选择,冒泡,插入)
java·数据结构·算法
好好学Java吖5 小时前
【二分题目】
java·开发语言
鲤籽鲲6 小时前
C# 中 [MethodImpl(MethodImplOptions.Synchronized)] 的使用详解
java·开发语言·c#