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正常順序 + 異常順序
```java
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