深入理解Spring Aop的执行顺序

网友投稿 466 2022-10-20


深入理解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(前置通知) ====>@AfterRejrZDcmIKturning(正常返回) ====>@After(后置通知)

异常执行:@Before(前置通知) ====>@AfterThrowing(方法异常) ====>@After(后置通知)

加上环绕通知的正常执行结果:

环绕前置处理

@Before前置通知

invokeMethod()

@AfterReturning / @AftjrZDcmIKerThrowing

@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(后置通知)http://

加上环绕通知的正常执行结果:

环绕前置处理

@Before前置通知

invokhttp://eMethod()

@AfterReturning / @AfterThrowing

@After后置通知

环绕通知后置处理

加上环绕通知的异常执行结果:

环绕前置处理

@Before前置通知

@AfterReturning / @AfterThrowing

@After


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:小马儿随笔:2009中国布线市场之“热词”盘点
下一篇:罗森伯格亚太电子有限公司专访
相关文章

 发表评论

暂时没有评论,来抢沙发吧~