内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

Springbean對(duì)象實(shí)例化的案例分析-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),阿魯科爾沁企業(yè)網(wǎng)站建設(shè),阿魯科爾沁品牌網(wǎng)站建設(shè),網(wǎng)站定制,阿魯科爾沁網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,阿魯科爾沁網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

這篇文章主要介紹Spring bean對(duì)象實(shí)例化的案例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

好了 我們聊聊 Bean 的實(shí)例化過(guò)程的幾個(gè)重要角色

BeanDefinitionRegistryPostProcessor 接口

Refresh().invokeBeanFactoryPostProcessors 這個(gè)方法里面。

BeanDefinitionRegistryPostProcessor 這個(gè)接口的調(diào)用分為三部:

1、調(diào)用實(shí)現(xiàn)了 PriorityOrdered 排序接口

2、調(diào)用實(shí)現(xiàn)了 Ordered 排序接口

3、沒(méi)有實(shí)現(xiàn)接口的調(diào)用

這個(gè)接口我的理解:獲取 BeanDefinitionRegistry 對(duì)象,獲取到這個(gè)對(duì)象就可以獲取這個(gè)對(duì)象中注冊(cè)的所有 BeanDefinition 對(duì)象,所以我們知道了,我們擁有這個(gè)對(duì)象就可以完成里面所有 BeanDefinition 對(duì)象的修改新增操作

Spring bean對(duì)象實(shí)例化的案例分析

BeanPostProcessor 的注冊(cè)

Refresh().registerBeanPostProcessors 這個(gè)方法里面。

Spring bean對(duì)象實(shí)例化的案例分析

拿到 BeanFactory 中所有注冊(cè)的 BeanDefinition 對(duì)象的名稱 beanName。

Spring bean對(duì)象實(shí)例化的案例分析

然后判斷是否實(shí)現(xiàn)了 PriorityOrdered 排序接口,Ordered 排序接口,getBean 是將該 ppName 對(duì)應(yīng)的 BeanDefinition 對(duì)象實(shí)例化。

Spring bean對(duì)象實(shí)例化的案例分析

把對(duì)應(yīng)的 BeanPostProcessor 對(duì)象注冊(cè)到 BeanFactory 中,BeanFactory 中有一個(gè)list 容器接收。getSingleton 方法代碼位置:AbstractBeanFactory.doGetBean 方法中

Spring bean對(duì)象實(shí)例化的案例分析

方法里面核心要點(diǎn):

Spring bean對(duì)象實(shí)例化的案例分析

Spring bean對(duì)象實(shí)例化的案例分析

把 beanName 添加到 singletonsCurrentlyInCreation Set 容器中,在這個(gè)集合里面的 bean 都是正在實(shí)例化的 bean,就是實(shí)例化還沒(méi)做完的 BeanName

Spring bean對(duì)象實(shí)例化的案例分析

調(diào)到 getObject 方法,完成 bean 的實(shí)例化。接下來(lái)

Spring bean對(duì)象實(shí)例化的案例分析

getObject 調(diào)用完后,就代表著 Bean 實(shí)例化已經(jīng)完成了,這時(shí)候就需要

1、singletonsCurrentlyInCreation 把 beanName 從這個(gè)集合中刪除

2、addSingleton,把 bean 緩存到一級(jí)緩存中

Spring bean對(duì)象實(shí)例化的案例分析createBean

方法代碼位置:AbstractBeanFactory.doGetBean 方法中

Spring bean對(duì)象實(shí)例化的案例分析

這個(gè)方法是 bean 實(shí)例化核心方法

Spring bean對(duì)象實(shí)例化的案例分析

實(shí)例化方法,把 bean 實(shí)例化,并且包裝成 BeanWrapper點(diǎn)進(jìn)這個(gè)方法里面。

Spring bean對(duì)象實(shí)例化的案例分析

這個(gè)方法是反射調(diào)用類中的 factoryMethod 方法。這要知道@Bean 方法的原理,實(shí)際上spring 會(huì)掃描有@bean 注解的方法,然后把方法名稱設(shè)置到 BeanDefinition 的 factoryMethod屬性中,接下來(lái)就會(huì)調(diào)到上面截圖中的方法實(shí)現(xiàn)@Bean 方法的調(diào)用。該方法里面的參數(shù)解析過(guò)程不需要了解。

Spring bean對(duì)象實(shí)例化的案例分析

determineConstructorsFromBeanPostProcessors

這個(gè)方法是 BeanPostProcessor 接口類的首次應(yīng)用,最終會(huì)掉到AutowiredAnnotationBeanPostProcessor 類的方法,在方法中會(huì)掃描有注解的構(gòu)造函數(shù)然后完成裝配過(guò)程。

以上是Spring bean對(duì)象實(shí)例化的案例分析的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

網(wǎng)站欄目:Springbean對(duì)象實(shí)例化的案例分析-創(chuàng)新互聯(lián)
鏈接URL:http://www.rwnh.cn/article8/cepiop.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站維護(hù)面包屑導(dǎo)航、外貿(mào)建站、虛擬主機(jī)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
怀宁县| 宁强县| 平乡县| 五指山市| 徐汇区| 旺苍县| 景德镇市| 曲阳县| 张家川| 巴青县| 五指山市| 徐州市| 文成县| 台江县| 江永县| 瑞金市| 浪卡子县| 五常市| 县级市| 开远市| 乌兰察布市| 迁安市| 隆林| 九江县| 新津县| 渭南市| 嵩明县| 云龙县| 穆棱市| 名山县| 榆社县| 秭归县| 岱山县| 荔浦县| 大洼县| 望都县| 建宁县| 巴彦淖尔市| 海林市| 宁津县| 伊金霍洛旗|