深入理解Spring Aop的执行顺序

本文将结合实例代码,介绍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执行顺序内容请搜索html中文网以前的文章或继续浏览下面的相关文章希望大家以后多多支持html中文网!

以上就是深入理解Spring Aop的执行顺序的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java