深入理解Spring Aop的执行顺序
首先回忆一下 AOP 的常用注解
- @Before:前置通知:目标方法之前执行
- @After:后置通知:目标方法之后执行
- @AfterReturning:返回后通知:执行方法结束前执行
- @AfterThrowing:异常通知:出现异常时执行
- @Around:环绕通知:环绕目标方法执行
Spring4 中aop正常顺序 + 异常顺序
try{ @Before method.invoke(obj, args); @AfterReturning }catch(){ @AfterThrowing }finally{ @After }
正常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterReturning(正常返回)
异常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterThrowing(方法异常)
另外如果还配置有环绕通知,则环绕通知的前置处理先于@Before执行
环绕通知的后置处理也先于@After、@AfterReturning、@AfterThrowing执行
正常结果:
环绕前置处理 @Before前置通知 invokeMethod() 环绕通知后置处理 @After后置通知 @AfterReturning / @AfterThrowing
异常结果:
环绕前置处理 @Before前置通知 @After后置通知 @AfterReturning / @AfterThrowing
Spring5 中aop正常顺序 + 异常顺序
正常执行:@Before(前置通知) ====>@AfterReturning(正常返回) ====>@After(后置通知)
异常执行:@Before(前置通知) ====>@AfterThrowing(方法异常) ====>@After(后置通知)
加上环绕通知的正常执行结果:
环绕前置处理 @Before前置通知 invokeMethod() @AfterReturning / @AfterThrowing @After后置通知 环绕通知后置处理
加上环绕通知的异常执行结果:
环绕前置处理 @Before前置通知 @AfterReturning / @AfterThrowing @After ```## Spring Aop的执行顺序
首先回忆一下 `AOP` 的常用注解
+ @Before:前置通知:目标方法之前执行
+ @After:后置通知:目标方法之后执行
+ @AfterReturning:返回后通知:执行方法结束前执行
+ @AfterThrowing:异常通知:出现异常时执行
+ @Around:环绕通知:环绕目标方法执行
> Spring4 中aop正常顺序 + 异常顺序
try{ @Before method.invoke(obj, args); @AfterReturning }catch(){ @AfterThrowing }finally{ @After }
正常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterReturning(正常返回)
异常执行:@Before(前置通知) ====>@After(后置通知) ====>@AfterThrowing(方法异常)
另外如果还配置有环绕通知,则环绕通知的前置处理先于@Before执行
环绕通知的后置处理也先于@After、@AfterReturning、@AfterThrowing执行
正常结果:
环绕前置处理 @Before前置通知 invokeMethod() 环绕通知后置处理 @After后置通知 @AfterReturning / @AfterThrowing
异常结果:
环绕前置处理 @Before前置通知 @After后置通知 @AfterReturning / @AfterThrowing
Spring5 中aop正常顺序 + 异常顺序
正常执行:@Before(前置通知) ====>@AfterReturning(正常返回) ====>@After(后置通知)
异常执行:@Before(前置通知) ====>@AfterThrowing(方法异常) ====>@After(后置通知)
加上环绕通知的正常执行结果:
环绕前置处理 @Before前置通知 invokeMethod() @AfterReturning / @AfterThrowing @After后置通知 环绕通知后置处理
加上环绕通知的异常执行结果:
环绕前置处理 @Before前置通知 @AfterReturning / @AfterThrowing @After
到此这篇关于深入理解Spring Aop的执行顺序的文章就介绍到这了,更多相关Spring Aop执行顺序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用java8 API遍历过滤文件目录及子目录和隐藏文件示例详解
这篇文章主要介绍了使用java8API遍历过滤文件目录及子目录及隐藏文件示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07SpringBoot+WebSocket实现即时通讯功能(Spring方式)
今天给大家分享一个SpringBoot+WebSocket实现即时通讯功能(Spring方式),WebSocket是一种在单个TCP连接上进行全双工通信的协议,文章通过代码示例给大家介绍的非常详细,需要的朋友可以参考下2023-10-10@SpringBootConfiguration重复加载报错问题解决
@SpringBootApplication 注解的 exclude 属性用于排除特定的自动配置类,而不是用于排除主配置类本身,因此,不能通过 exclude 属性来排除主配置类的加载,这篇文章主要介绍了@SpringBootConfiguration重复加载报错,需要的朋友可以参考下2024-08-08
最新评论