五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Spring AOP三部曲之通知

2022-05-25 10:59 作者:做架構(gòu)師不做框架師  | 我要投稿


前言

上篇文章我們講解了Spring AOP是如何創(chuàng)建代理對象的,在這篇文章我們繼續(xù)講解AOP是如何通知的。

這是從網(wǎng)上找的一個簡單demo,大家可以對照著去理解。注意:本文是以5.1.10版本為講解。

步驟一:獲取此方法的攔截鏈

我們通過getInterceeptorsAndDynamicInterceptionAdvice獲得相應攔截器集合,業(yè)務很簡單,如果有緩存,取緩存中的數(shù)據(jù),否則調(diào)用this.advisorChainFactory.getInterceptorsAndDynamicInterceptionAdvice()方法,該方法的具體實現(xiàn)類是DefaultAdviisorChainFactory類。

步驟二:從提供的配置實例config中獲取advisor列表

業(yè)務大致如下:

  • 遍歷所有的advisor

  • 如果是PointcutAdvisor,看是否能應用到方法上

  • 如果誰IntroductionAdvisor,看能否應用到目標類的tragetClass上

  • 將滿足條件的advisor,通過AdvisorAdapter.getInterceptor轉(zhuǎn)化為MethodInterceptor返回集合

步驟三:攔截器注冊和適配

GlobalAdvisorAdapterRegistry類起到了適配器和單例的作用,他通過DefaultAdviisorAdapterRegistry類提供注冊和各種通知的適配功能。


步驟四:設置默認通知配置

我們通過他的構(gòu)造器可以看到,默認支持MethodBeforeAdviceAdapter、AfterReturningAdviceAdapter、ThrowsAdviceAdapter通知。
這里我們以默認的MethodBeforeAdviceAdapter類為例,也就是我們簡單demo中@before注解。

步驟五:@before注解

方法的業(yè)務很簡單,通過supportsAdvice進行適配,通過getInterceptor調(diào)用具體的攔截器。

步驟六:包裝 MethodBeforeAdvice 的攔截器

可以看到,invoke方法中,首先觸發(fā)了advice的before回調(diào),也就是我們,然后才是proceed,其他默認的同樣如此。

步驟七:包裝 AfterReturningAdvice 的攔截器


步驟八:包裝 after-throwing 的攔截器


時序圖


寫在最后

好兄弟可以點贊并關(guān)注我的公眾號“javaAnswer”,全部都是干貨。


Spring AOP三部曲之通知的評論 (共 條)

分享到微博請遵守國家法律
余庆县| 木里| 富顺县| 旺苍县| 大安市| 绥中县| 南投市| 长白| 理塘县| 奉节县| 唐河县| 石台县| 乌兰察布市| 耿马| 邵阳县| 古田县| 藁城市| 都江堰市| 南漳县| 牙克石市| 鲁甸县| 滨海县| 清水县| 陇南市| 永嘉县| 林芝县| 望江县| 皮山县| 钟祥市| 武汉市| 深泽县| 十堰市| 孟津县| 岐山县| 长岭县| 敖汉旗| 崇仁县| 湛江市| 石泉县| 和顺县| 富阳市|