時序圖
SpringDI-依賴注入的概念
依賴注入發生的時間
當SpringIOC容器完成了Bean定義資源的定位、載入和解析註冊以後,IOC容器中已經管理了Bean定義的相關數據。但此時IOC容器還沒有對所管理的Bean進行依賴注入。依賴注入在以下兩種情況發生:
1.用戶第一次調用getBean()方法時,IOC容器觸發依賴注入
2.當用戶在配置文件中將<bean>元素配置了 lazy-init=false 屬性,即讓容器在解析註冊 Bean 定義時進行預實例化,觸發依賴注入。
尋找Bean的入口
在BeanFactory中可以找到getBean()方法,具體實現在AbstractBeanFactory中,在getBean()方法中又調用doGetBean方法向IOC容器獲取被管理的Bean,在BeanFactory中可以找到getBean()方法,具體實現在AbstractBeanFactory中,在getBean()方法中又調用doGetBean方法向IOC容器獲取被管理的Bean,在doGetBean方法中會調用createBean方法,具體實現在AbstractAutowireCapableBeanFactory中。createBean方法中會調用doCreateBean方法,在doCreateBean方法中完成對Bean的依賴注入,最終由registerDisposableBeanIfNecessary方法註冊完成依賴注入的bean。