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),最后是环绕通知的后置处理。

相关推荐
JH30739 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_10 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble11 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟11 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖11 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
qq_124987075312 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
Coder_Boy_12 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Mr_sun.12 小时前
Day06——权限认证-项目集成
java
瑶山12 小时前
Spring Cloud微服务搭建四、集成RocketMQ消息队列
java·spring cloud·微服务·rocketmq·dashboard
abluckyboy12 小时前
Java 实现求 n 的 n^n 次方的最后一位数字
java·python·算法