2012-05-24 97 views
0

我是新來的春天,因此提前道歉,如果問題似乎是微不足道的。春季參考單身豆

當我在spring中聲明一個bean時,默認情況下它是單例。當spring從config.xml初始化bean時,它使用默認的創建者。如果我爲一個類聲明我的私有創建者和getInstance方法,那麼我不會引用在Spring初始化期間創建的bean - 我只是再次創建相同的類,並且稍後隨時調用getInstance()時引用此類。

我的問題是如何獲得引用從代碼初始化(到config.xml中定義的bean)創建的單例。

回答

0

如果你的類實現了Singleton Pattern,那麼getInstance()將不會返回除Spring之外創建的實例。

我怎樣才能參考初始化過程中創建

基本上單身,你應該有它injected其他類,在那裏你會需要它。 而且你也可以通過ApplicationContext.getBean(), although it is not that elegant來引用它。

+0

非常感謝!我想這就是我正在尋找的,但必須看看下面給出的maksimov鏈接。 – Karusmeister

+0

當然。請注意,我給了你同樣的鏈接(最後一個鏈接)。 – bpgergo

+0

當然,在我做了之後:-P – maksimov

2

如果在代碼中有一個工廠方法,則使xml配置調用該工廠方法而不是構造函數。請勿從Java代碼中調用getInstance

<bean id="fromFactory" class="org.example.MyFactory" factory-method="getInstance" /> 
2

Spring會默認創建你的類的一個實例。它會調用該類的構造函數一次。我想你已經與

public static void getInstance() 

成語在Java單身這是你的類來執行,你永遠不能擁有一個以上的實例,試圖混淆這一點。

Spring構造了一個類的單個實例,並將它存儲在Spring容器中供您使用。爲了獲得對Spring創建的實例的引用,您需要從Spring的應用程序上下文中檢索它。

+0

感謝您澄清混亂:)下次肯定會記住它。 – Karusmeister