Spring依賴注入

2021-09-07 16:45:19 字數 1906 閱讀 1976

在這個refresh方法中會獲取beanfactory,預設的beanfactory是org.springframework.beans.factory.support.defaultlistablebeanfactory

getbean方法是在abstractbeanfactory中定義的,而所有的getbean方法最終都是調的dogetbean方法

abstractbeanfactory#getbean

1、呼叫dogetbean方法

abstractbeanfactory#dogetbean

1、檢查singleton快取中是否有這個bean,如果有直接返回

2、檢查父級beanfactory中是否有這個bean,如果有直接返回

3、檢查這個beandefinition是否有依賴,如果有,則遞迴的獲取這些依賴的bean(ps:通過getbean方法)直到沒有依賴為止

4、通過createbean方法建立bean

abstractautowirecapablebeanfactory#createbean

1、如果設定了beanpostprocessor,則返回乙個**物件

2、呼叫docreatebean方法

abstractautowirecapablebeanfactory#docreatebean

在這個方法中呼叫了兩個特別重要的方法createbeaninstance和populatebean,前者用於例項化bean,後者用於初始化bean例項

1、如果指定了工廠方法的話,則用指定的工廠方法例項化bean

2、如果建構函式使用了自動裝配的話,則使用autowireconstructor例項化bean

3、決定以使用帶引數的構造方法例項化bean

4、使用預設的構造方法例項化bean

補充:

1、autowire constructor

2、用預設的構造方法例項化的時候涉及到例項化策略,預設的策略是使用cglib,還有一種是使用反射

這一步所做的事情就是找到那些需要注入的屬性和它所對應的例項,然後將它設定到相應的屬性上

還有一點是屬性的型別可能有多種,每一種的取值方式都不一樣

參考 

spring 依賴注入 Spring依賴注入

依賴注入 dependency injection,簡稱di 與控制反轉 ioc 的含義相同控制反 在使用spring框架之後,物件的例項不再由呼叫者來建立,而是由spring容器來建立,spring容器會負責控制程式之間的關係,而不是由呼叫者的程式 直接控制,這樣控制權由應用程式轉移到了sprin...

Spring依賴注入

所謂依賴注入,是指在程式執行過程中,如果需要呼叫另乙個物件協助時,無須在 中建立按被呼叫者,而是依賴外部注入。spring 的依賴注入對呼叫者和被呼叫者幾乎沒有任何要求,完全支援對 pojo 之間依賴關係的管理。依賴注入的兩種方式 1 設值注入 設值注入是指通過 setter 方法傳入被呼叫者的例項...

SPring依賴注入

所謂依賴注入,是指在程式執行過程中,如果需要呼叫另乙個物件協助時,無須在 中建立按被呼叫者,而是依賴外部注入。spring的依賴注入對呼叫者和被呼叫者幾乎沒有任何要求,完全支援對pojo之間依賴關係的管理。依賴注入的兩種方式 1 設值注入 設值注入是指通過setter方法傳入被呼叫者的例項。這種注入...