spring通過資源載入器載入相應的xml檔案,使用讀取器讀取資源載入器中的檔案到讀取器中,在讀取過程中,解析相應的xml檔案元素,轉化為spring定義的資料結beandefinition,把相應的beandefinition註冊到登錄檔中。登錄檔中包含的beandefinition的資料結構,沒有經過加工處理過,無法得到我們想要的bean物件。
我們如何得到bean物件,spring都做了那些工作?beanfactory提供了多種方式得到bean物件,getbean()方法是最核心得到bean物件
getbean主要由abstractbeanfactory、abstractautowirecapablebeanfactory、以及defaultlistablebeanfactory實現
abstractbeanfactory 實現了依賴關係處理
abstractautowirecapablebeanfactory 實現了bean的create過程
defaultlistablebeanfactory 實現了beandefinition的管理
自己看原始碼畫出了這張流程圖,根據這張圖來介紹spring是怎麼一步步的得到bean物件的。
以下是getbean方法的實現流程。
getbean經過方法過載後,最終呼叫的是dogetbean方法,
spring bean的載入順序
一 spring裝配bean的過程 1.例項化 2.設定屬性值 3.如果實現了beannameaware介面,呼叫setbeanname設定bean的id或者name 4.如果實現beanfactoryaware介面,呼叫setbeanfactory 設定beanfactory 6.呼叫beanpo...
spring bean的懶載入原理
spring bean的懶載入原理 1 普通的bean的 初始化是在初始化階段開始執行的,而被lazy init修飾的bean則是從容器第一次進行context.getbean 進行觸發 2 接下來對每個beandefinition進行處理,如果是懶載入的則在容器初始化階段不處理,其他的則在容器初始...
Spring bean銷毀的過程
一 defaultsingletonbeanregistry之destroysingleton string beanname 銷毀單例beanpublic void destroysingleton string beanname destroybean beanname,disposablebe...