2017-03-26 41 views
0

當下面的豆將instanciated?Instanciate與單身職責範圍的豆

<bean id="a" class="Someclass" lazy-init="true" scope="singleton"/> 

在這種情況下Spring是否忽略了「lazy-init」屬性(因爲我們使用了單例作用域)?

加載bean定義時將創建一個新實例。任何人都可以確認嗎?

謝謝。

回答

0

<bean id="a" class="Someclass" lazy-init="true" scope="singleton"/> 

<bean id="a" class="Someclass" lazy-init="true"/> 

相同。 spring bean的默認範圍是singleton。所以它絕對不會忽略這個屬性。

lazy-init="true"在啓動時不會創建您的bean。你的bean只在被請求時纔會被創建。

0

在這種情況下,Spring是否忽略「lazy-init」屬性(因爲我們的 使用單例範圍)?

不,它不會忽略,只有當它被訪問一次,而不是在容器中啓動的對象將被創建。

加載bean定義爲 時,將創建一個新實例。任何人都可以證實嗎?

不,只有在實際需要bean時纔會創建實例。

您可以從here指在春天文檔的相同點和下方是文本(重點煤礦)

懶初始化豆告訴IoC容器,首先,當創建一個bean 實例要求,而不是在啓動然而,當一個惰性初始化bean是一個未經過延遲初始化的單例bean的依賴時,ApplicationContext在啓動時創建了延遲初始化bean,因爲它必須滿足單例的依賴關係。懶惰初始化的bean被注入到其他地方的單身bean中,而不是延遲初始化的。