当前位置:  开发笔记 > 编程语言 > 正文

如何强制spring容器不返回bean的单例实例?

如何解决《如何强制spring容器不返回bean的单例实例?》经验,为你挑选了2个好方法。

当我调用getBean(name)a时BeanFactory,我会返回应用程序上下文中定义的bean实例.但是,当我getBean(name)再次调用(使用相同的名称)时,我得到了相同的bean实例.我理解在某些(很多?)情况下这是如何可取的,但是如何告诉BeanFactory我给我一个新实例?

示例Spring配置(简洁地说......我遗漏了一些冗长,但这应该得到重点):


   

示例Java:

for(int i = 0;i++;i<=1) {
    ApplicationContext context = ClassPathXmlApplicationContext("context.xml");
    Object o = context.getBean("beanA");

    System.out.println(o.toString());  // Note: misc.BeanA does not implement 
                                       // toString(), so this will display the OOID
                                       // so that we can tell if it's the same
                                       // instance
}

当我运行这个时,我会得到类似的东西:

misc.BeanClass@139894
misc.BeanClass@139894

请注意,两者都具有相同的OOID ...所以这些是相同的实例...但我想要不同的实例.



1> Arcane..:

你需要告诉spring你想要一个原型bean而不是一个单独的bean


这将为您提供每个请求的新实例.



2> duffymo..:

默认范围是单例,但您可以将其设置为原型,请求,会话或全局会话.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有