国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

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)建代理對象的評論 (共 條)

分享到微博請遵守國家法律
盐山县| 常宁市| 长顺县| 类乌齐县| 渭源县| 高平市| 平原县| 波密县| 康乐县| 东城区| 屏东市| 永胜县| 石泉县| 万盛区| 延安市| 上林县| 互助| 舟曲县| 孟州市| 莲花县| 泽普县| 习水县| 宝山区| 吕梁市| 平安县| 儋州市| 北川| 吉水县| 沙坪坝区| 车险| 来凤县| 清原| 杭州市| 岐山县| 锡林郭勒盟| 宜都市| 安多县| 九台市| 临朐县| 兰西县| 平果县|