本文參考 《死磕Spring系列》
Spring IOC 容器
image.png
Spring IOC 容器所起的作用如上圖所示,它會以某種方式加載 Configuration Metadata邑狸,將其解析注冊到容器內部,然后回根據這些信息綁定整個系統(tǒng)的對象赚哗,最終組裝成一個可用的基于輕量級容器的應用系統(tǒng)硅堆。
Spring 在實現(xiàn)上述功能中,將整個流程分為兩個階段:容器初始化階段和加載bean 階段扩所。
- 容器初始化階段:首先通過某種方式加載 Configuration Metadata (主要是依據 Resource朴乖、ResourceLoader 兩個體系)助赞,然后容器會對加載的 Configuration MetaData 進行解析和分析袁勺,并將分析的信息組裝成 BeanDefinition,并將其保存注冊到相應的 BeanDefinitionRegistry 中期丰。至此钝荡,Spring IOC 的初始化工作完成。
Spring IOC容器初始化-loadBean 的全流程
bean 的轉換過程
-
**加載 bean **階段:經過容器初始化階段后赎离,應用程序中定義的 bean 信息已經全部加載到系統(tǒng)中了端辱,當我們顯示或者隱式地調用 getBean() 時,則會觸發(fā)加載 bean 階段荣病。在這階段渗柿,容器會首先檢查所請求的對象是否已經初始化完成了,如果沒有做祝,則會根據注冊的 bean 信息實例化請求的對象,并為其注冊依賴编兄,然后將其返回給請求方声登。至此第二個階段也已經完成。
getBean 的全流程
image.png