深入理解Spring Aop的執(zhí)行順序
首先回憶一下 AOP 的常用注解
@Before:前置通知:目標(biāo)方法之前執(zhí)行 @After:后置通知:目標(biāo)方法之后執(zhí)行 @AfterReturning:返回后通知:執(zhí)行方法結(jié)束前執(zhí)行 @AfterThrowing:異常通知:出現(xiàn)異常時執(zhí)行 @Around:環(huán)繞通知:環(huán)繞目標(biāo)方法執(zhí)行Spring4 中aop正常順序 + 異常順序
try{ @Before method.invoke(obj, args); @AfterReturning}catch(){ @AfterThrowing}finally{ @After}
正常執(zhí)行:@Before(前置通知) ====>@After(后置通知) ====>@AfterReturning(正常返回)異常執(zhí)行:@Before(前置通知) ====>@After(后置通知) ====>@AfterThrowing(方法異常)
另外如果還配置有環(huán)繞通知,則環(huán)繞通知的前置處理先于@Before執(zhí)行
環(huán)繞通知的后置處理也先于@After、@AfterReturning、@AfterThrowing執(zhí)行
正常結(jié)果:
環(huán)繞前置處理@Before前置通知invokeMethod()環(huán)繞通知后置處理@After后置通知@AfterReturning / @AfterThrowing
異常結(jié)果:
環(huán)繞前置處理@Before前置通知@After后置通知@AfterReturning / @AfterThrowing
Spring5 中aop正常順序 + 異常順序
正常執(zhí)行:@Before(前置通知) ====>@AfterReturning(正常返回) ====>@After(后置通知)異常執(zhí)行:@Before(前置通知) ====>@AfterThrowing(方法異常) ====>@After(后置通知)
加上環(huán)繞通知的正常執(zhí)行結(jié)果:
環(huán)繞前置處理@Before前置通知invokeMethod()@AfterReturning / @AfterThrowing@After后置通知環(huán)繞通知后置處理
加上環(huán)繞通知的異常執(zhí)行結(jié)果:
環(huán)繞前置處理@Before前置通知@AfterReturning / @AfterThrowing@After```## Spring Aop的執(zhí)行順序
首先回憶一下 `AOP` 的常用注解
+ @Before:前置通知:目標(biāo)方法之前執(zhí)行
+ @After:后置通知:目標(biāo)方法之后執(zhí)行+ @AfterReturning:返回后通知:執(zhí)行方法結(jié)束前執(zhí)行+ @AfterThrowing:異常通知:出現(xiàn)異常時執(zhí)行+ @Around:環(huán)繞通知:環(huán)繞目標(biāo)方法執(zhí)行
> Spring4 中aop正常順序 + 異常順序
try{ @Before method.invoke(obj, args); @AfterReturning}catch(){ @AfterThrowing}finally{ @After}
正常執(zhí)行:@Before(前置通知) ====>@After(后置通知) ====>@AfterReturning(正常返回)異常執(zhí)行:@Before(前置通知) ====>@After(后置通知) ====>@AfterThrowing(方法異常)
另外如果還配置有環(huán)繞通知,則環(huán)繞通知的前置處理先于@Before執(zhí)行
環(huán)繞通知的后置處理也先于@After、@AfterReturning、@AfterThrowing執(zhí)行
正常結(jié)果:
環(huán)繞前置處理@Before前置通知invokeMethod()環(huán)繞通知后置處理@After后置通知@AfterReturning / @AfterThrowing
異常結(jié)果:
環(huán)繞前置處理@Before前置通知@After后置通知@AfterReturning / @AfterThrowing
Spring5 中aop正常順序 + 異常順序
正常執(zhí)行:@Before(前置通知) ====>@AfterReturning(正常返回) ====>@After(后置通知)異常執(zhí)行:@Before(前置通知) ====>@AfterThrowing(方法異常) ====>@After(后置通知)
加上環(huán)繞通知的正常執(zhí)行結(jié)果:
環(huán)繞前置處理@Before前置通知invokeMethod()@AfterReturning / @AfterThrowing@After后置通知環(huán)繞通知后置處理
加上環(huán)繞通知的異常執(zhí)行結(jié)果:
環(huán)繞前置處理@Before前置通知@AfterReturning / @AfterThrowing@After
到此這篇關(guān)于深入理解Spring Aop的執(zhí)行順序的文章就介紹到這了,更多相關(guān)Spring Aop執(zhí)行順序內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. asp.net core項目授權(quán)流程詳解2. UDDI FAQs3. ASP基礎(chǔ)入門第三篇(ASP腳本基礎(chǔ))4. css進(jìn)階學(xué)習(xí) 選擇符5. jsp實現(xiàn)textarea中的文字保存換行空格存到數(shù)據(jù)庫的方法6. 將properties文件的配置設(shè)置為整個Web應(yīng)用的全局變量實現(xiàn)方法7. jsp網(wǎng)頁實現(xiàn)貪吃蛇小游戲8. .NET SkiaSharp 生成二維碼驗證碼及指定區(qū)域截取方法實現(xiàn)9. ASP.NET Core實現(xiàn)中間件的幾種方式10. JSP之表單提交get和post的區(qū)別詳解及實例
