深入理解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執行順序內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- spring-AOP 及 AOP獲取request各項參數操作
- 使用Spring開啟註解AOP的支持放置的位置
- Java AOP動態代理詳細介紹
- Spring框架學習之AOP詳解
- SpringBoot整合Web之AOP配置詳解