spring Bean的生命週期和迴圈依賴

2022-06-07 23:33:13 字數 981 閱讀 6196

a類引用了b,b類引用了a,像這種迴圈著依賴就是迴圈依賴;

對於這種配置不會報錯

對於這種配置會報錯(error creating bean with name 'instancea': requested bean is currently in creation: is there an unresolvable circular reference?)

doget()方法:

1、解析別名

final string beanname = transformedbeanname(name);

2、從單例緩衝池中獲取物件(第一次獲取不到)

object sharedinstance = getsingleton(beanname);

3、判斷如果需要建立的bean是原型(非單例),就會丟擲異常;

4、判斷當前容器是否有父工廠,(有由父工廠載入)

5、合併bean定義(如果類似下面的這種配置,就需要合併bean定義)

**

final rootbeandefinition mbd = getmergedlocalbeandefinition(beanname);

6、呼叫dependson依賴檢查(比如下面這種配置就會報錯)

@dependson("instanceb")

@bean

public instancea instancea()

@dependson("instancea")

@bean

public instanceb instanceb()

6、建立例項,如果是單例,呼叫

getsingleton(beanname, new objectfactory() {}

Spring Bean生命週期

1.容器尋找bean的定義資訊並且將其實例化。2.受用依賴注入,spring按照bean定義資訊配置bean的所有屬性。3.如果bean實現了beannameaware介面,工廠呼叫bean的setbeanname 方法傳遞bean的id。4.如果bean實現了beanfactoryaware介面,...

spring bean生命週期

生命週期 定義,初始化,使用,銷毀 一.初始化 方法1.實現org.springframework.beans.foctory.initializingbean介面,覆蓋afterpropertiesset方法。系統會自動查詢afterpropertiesset方法,執行其中的初始化操作 方法2.配...

Springbean生命週期

springbean的完整生命週期大致如下 1 首先例項化 beanfactorypostprocessor的實現類,執行它的postprocessorbeanfactory方法 2 例項化beanpostprocessor 的實現類 3 例項化 instantiationawarebeanpost...