我是新來的春天,因此提前道歉,如果問題似乎是微不足道的。春季參考單身豆
當我在spring中聲明一個bean時,默認情況下它是單例。當spring從config.xml初始化bean時,它使用默認的創建者。如果我爲一個類聲明我的私有創建者和getInstance方法,那麼我不會引用在Spring初始化期間創建的bean - 我只是再次創建相同的類,並且稍後隨時調用getInstance()時引用此類。
我的問題是如何獲得引用從代碼初始化(到config.xml中定義的bean)創建的單例。
我是新來的春天,因此提前道歉,如果問題似乎是微不足道的。春季參考單身豆
當我在spring中聲明一個bean時,默認情況下它是單例。當spring從config.xml初始化bean時,它使用默認的創建者。如果我爲一個類聲明我的私有創建者和getInstance方法,那麼我不會引用在Spring初始化期間創建的bean - 我只是再次創建相同的類,並且稍後隨時調用getInstance()時引用此類。
我的問題是如何獲得引用從代碼初始化(到config.xml中定義的bean)創建的單例。
如果你的類實現了Singleton Pattern,那麼getInstance()
將不會返回除Spring之外創建的實例。
我怎樣才能參考初始化過程中創建
基本上單身,你應該有它injected其他類,在那裏你會需要它。 而且你也可以通過ApplicationContext.getBean()
, although it is not that elegant來引用它。
如果在代碼中有一個工廠方法,則使xml配置調用該工廠方法而不是構造函數。請勿從Java代碼中調用getInstance
。
<bean id="fromFactory" class="org.example.MyFactory" factory-method="getInstance" />
我認爲這可能是有關你的問題: Why is Spring's ApplicationContext.getBean considered bad?
有多種方式:您可以從ApplicationContext中獲取bean的實例,可以@Autowire它,等
感謝您的鏈接 – Karusmeister
Spring會默認創建你的類的一個實例。它會調用該類的構造函數一次。我想你已經與
public static void getInstance()
成語在Java單身這是你的類來執行,你永遠不能擁有一個以上的實例,試圖混淆這一點。
Spring構造了一個類的單個實例,並將它存儲在Spring容器中供您使用。爲了獲得對Spring創建的實例的引用,您需要從Spring的應用程序上下文中檢索它。
感謝您澄清混亂:)下次肯定會記住它。 – Karusmeister
非常感謝!我想這就是我正在尋找的,但必須看看下面給出的maksimov鏈接。 – Karusmeister
當然。請注意,我給了你同樣的鏈接(最後一個鏈接)。 – bpgergo
當然,在我做了之後:-P – maksimov