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

歡迎光臨散文網 會員登陸 & 注冊

Spring AOP三部曲之創(chuàng)建代理對象

2022-05-18 11:15 作者:做架構師不做框架師  | 我要投稿



什么是AOP?

AOP是一種編程范式,旨在通過允許分離橫切關注點來增加模塊化。他通過在不修改代碼本身的情況下向現(xiàn)有代碼添加額外的行為來實現(xiàn)這一點。

相反,我們可以分別聲明新方法和新行為。Spring的AOP框架幫助我們實現(xiàn)這些橫切關注點。

注意:本文是以5.2.3版本為講解。

步驟一:AutowireCapableBeanFactory類對容器生成的Bean添加后置處理器

在前兩篇關于“DI”的文章中,我們講到Spring對Bean屬性通過“populateBean()”方法是如何進行依賴注入的,今天我們講解通過“initializeBean()”方法是如何為Bean實例應用BeanPostProcessor后置處理器。

步驟二:為Bean實例對象添加BeanPostProcessor后置處理器的入口

初始化給定的bean實例,應用工廠回調以及init方法和beanPostProcessor后置處理器。從createBean調用定義的bean,從initializeBean調用現(xiàn)有bean實例。大致業(yè)務如下:

  • invokeAwareMethods:為Bean實例包裝相關屬性,如:bean名稱、Bean類加載器、bean工廠等。

  • applyBeanPostProcessorsBeforeInitialization:將 BeanPostProcessors 應用于給定的現(xiàn)有 bean 實例,調用它們的 postProcessBeforeInitialization 方法。返回的 bean 實例可能是當前bean的包裝后的bean。

  • invokeInitMethods:執(zhí)行初始化的方法,如果當前bean實現(xiàn)了InitializingBean接口就調用afterPropertiesSet()方法,如果是init-method屬性,就調用指定的方法

  • applyBeanPostProcessorsAfterInitialization:將 BeanPostProcessors 應用于給定的現(xiàn)有 bean 實例,調用它們的 postProcessAfterInitialization 方法。返回的 bean 實例可能是當前bean的包裝后的bean。

步驟三:調用BeanPostProcessor后置處理器實例對象初始化之前的處理方法

循環(huán)遍歷獲取所有的BeanPostProcessor后置處理器,調用所有的初始化前的處理方法

步驟四:調用BeanPostProcessor后置處理器實例對象初始化之后的處理方法

循環(huán)遍歷獲取所有的BeanPostProcessor后置處理器,調用所有的初始化后的處理方法

BeanPostProcessor有很多實現(xiàn)的子類,分別有不同的功能,而其中創(chuàng)建AOP代理對象的子類“AbstractAutoProxyCreator”,在這里我們繼續(xù)分析該類的postProcessAfterInitialization方法。

步驟五:選擇代理策略

大致業(yè)務如下:

  • 判斷當前是否需要代理(即Advice類、Pointcut類、Advisor類、AopInfrastructureBean類),如果不需要,返回當前bean實例

  • getAdvicesAndAdvisorsForBean:獲取這個bean的advice集合

  • createProxy:創(chuàng)建代理

驟六:獲取這個bean的advice集合

步驟七:創(chuàng)建AOP代理

大致業(yè)務如下:

  • buldAdvisors:確定給定bean的Advisor,包括特定的攔截器和公共攔截器,所有這些都適合Advisor接口。

  • getProxy:獲取指定的代理

步驟八:根據工廠的設置獲取代理

proxyFactory有JDK和CGLIB的,最終調用的是DefaultAopProxyFactory類的createAopProxy()方法

步驟九:為給定的AOP配置創(chuàng)建一個AopProxy

在這個方法里我們根據不同策略是使用JDK和CGLIB的代理。

時序圖

寫在最后

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


Spring AOP三部曲之創(chuàng)建代理對象的評論 (共 條)

分享到微博請遵守國家法律
东阿县| 清涧县| 桂平市| 瑞昌市| 聊城市| 洛阳市| 泸水县| 广南县| 湖南省| 嘉义市| 元阳县| 自贡市| 尉氏县| 莎车县| 沐川县| 禹城市| 如皋市| 沂水县| 英超| 濉溪县| 包头市| 昌都县| 宝鸡市| 北票市| 厦门市| 工布江达县| 全州县| 林口县| 南投市| 岳普湖县| 司法| 南溪县| 贺州市| 石首市| 惠来县| 龙南县| 自治县| 永康市| 肥城市| 景宁| 平度市|