IOC 之深入理解 Spring IoC

本文參考 《死磕Spring系列》

Spring IOC 容器

image.png

Spring IOC 容器所起的作用如上圖所示,它會(huì)以某種方式加載 Configuration Metadata,將其解析注冊(cè)到容器內(nèi)部,然后回根據(jù)這些信息綁定整個(gè)系統(tǒng)的對(duì)象,最終組裝成一個(gè)可用的基于輕量級(jí)容器的應(yīng)用系統(tǒng)。
Spring 在實(shí)現(xiàn)上述功能中,將整個(gè)流程分為兩個(gè)階段:容器初始化階段加載bean 階段。

  • 容器初始化階段:首先通過某種方式加載 Configuration Metadata (主要是依據(jù) Resource、ResourceLoader 兩個(gè)體系),然后容器會(huì)對(duì)加載的 Configuration MetaData 進(jìn)行解析和分析,并將分析的信息組裝成 BeanDefinition,并將其保存注冊(cè)到相應(yīng)的 BeanDefinitionRegistry 中。至此,Spring IOC 的初始化工作完成。
Spring IOC容器初始化-loadBean 的全流程
bean 的轉(zhuǎn)換過程
  • **加載 bean **階段:經(jīng)過容器初始化階段后,應(yīng)用程序中定義的 bean 信息已經(jīng)全部加載到系統(tǒng)中了,當(dāng)我們顯示或者隱式地調(diào)用 getBean() 時(shí),則會(huì)觸發(fā)加載 bean 階段。在這階段,容器會(huì)首先檢查所請(qǐng)求的對(duì)象是否已經(jīng)初始化完成了,如果沒有,則會(huì)根據(jù)注冊(cè)的 bean 信息實(shí)例化請(qǐng)求的對(duì)象,并為其注冊(cè)依賴,然后將其返回給請(qǐng)求方。至此第二個(gè)階段也已經(jīng)完成。


    getBean 的全流程
image.png
最后編輯于
?著作權(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)容

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