2012-05-24 99 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