我是新来的春天,因此提前道歉,如果问题似乎是微不足道的。春季参考单身豆
当我在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