2014-03-02 64 views
2

我在bean標籤內的spring上下文文件中定義了default-lazy-init =「true」,但是當我啓動tomcat時,我的bean正在實例化。這裏是它顯示日誌 -Spring default-lazy-init似乎不工作,我看到單例的預先實例化

org.springframework.beans.factory.support.DefaultListableBeanFactory(DefaultListableBeanFactory.java:555) - 預實例獨身org.s[email protected]ac6fb1:定義豆[dataSource,我的其他豆在應用程序.......

我錯過了什麼?

+0

發佈完整的堆棧跟蹤或日誌。發佈您的背景。 –

回答

4

即使一個bean被聲明爲懶惰初始化,如果另一個bean依賴它,它仍然會被初始化。

我打算從您的日誌中推斷出該問題的bean是dataSource。我也會假設你有其他的豆子取決於dataSource(否則它不會很有用)。如果上下文初始化了其他bean並發現它需要自動裝載bean,則它必須首先對其進行初始化。

如果你想完全延遲初始化,你將不得不讓每個bean在一些對象圖中被懶惰地初始化。

+0

Thx for your reply,我有100多個其他bean(控制器,服務,dao)同時被初始化。你能否更詳細地解釋一下「讓一些對象圖中的每個bean都被懶惰地初始化」。 – Amit

+0

@amit說你的lazy-init bean是'A'。 'A'是'B'的注入依賴。如果你從'ApplicationContext'請求'B',它將初始化'B'(如果它還沒有),並且由於依賴關係,也初始化'A'。 –

+0

我研究了相互依賴性方面,但其中大多數不是。它們是不同功能/模塊的一部分。除此之外的其他任何想法? – Amit