Spring Bean的初始化源碼解析

spring bean在初始化的過(guò)程中,大致流程如下,后面我們將根據(jù)以下的幾點(diǎn)來(lái)分析和理解源碼:

1.轉(zhuǎn)換對(duì)應(yīng)的beanName

2.嘗試從緩存中加載單例

3.bean的實(shí)例化

4.原型模式的依賴檢查

5.檢測(cè)parentBeanFacotory

6.將存儲(chǔ)XML配置文件的GernericBeanDefinition轉(zhuǎn)換為RootBeanDefinition.

7.尋找依賴

8.針對(duì)不同的scope進(jìn)行Bean的創(chuàng)建

9.類型轉(zhuǎn)換


FactoryBean的使用

一般情況,spring通過(guò)反射機(jī)制利用Bean的class屬性指定實(shí)現(xiàn)類來(lái)實(shí)現(xiàn)Bean。


圖1


緩存中獲取單例Bean

單例只會(huì)在spring的同一個(gè)容器內(nèi)被創(chuàng)建一次,后續(xù)再獲取Bean直接從單例緩存中獲取。此時(shí)會(huì)存在循環(huán)依賴的情況,程序首先嘗試從緩存中加載,然后再次嘗試從singletionFactories中加載。如果存在循環(huán)依賴,spring創(chuàng)建Bean的原則是不等Bean創(chuàng)建完成就會(huì)將創(chuàng)建Bean的objectFactory提早曝光加入到緩存中,一旦下一個(gè)Bean創(chuàng)建時(shí)需要依賴上一個(gè)Bean,則直接使用objectFactory.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 47,256評(píng)論 6 342
  • Spring源碼解析——Bean的加載前奏 User user = (User)context.getBean("...
    仗劍詩(shī)篇閱讀 953評(píng)論 0 2
  • 描述 對(duì)于一個(gè)數(shù)組,我們可以對(duì)其建立一棵 線段樹, 每個(gè)結(jié)點(diǎn)存儲(chǔ)一個(gè)額外的值 count 來(lái)代表這個(gè)結(jié)點(diǎn)所指代的數(shù)...
    6默默Welsh閱讀 230評(píng)論 0 0
  • 貝貝,從今天開始媽媽要給你寫情書了。 情書是什么呢?情書就是相愛(ài)的人用書信的方式表達(dá)內(nèi)心的愛(ài)意。 前兩天我們家迎來(lái)...
    giguala閱讀 170評(píng)論 0 0

友情鏈接更多精彩內(nèi)容