Java Spring bean范围:单例与应用程序

时间:2015-11-06 16:26:07

标签: spring

有人能解释这两个Spring bean范围之间的区别吗? 我熟悉Singleton模式。

这是唯一的区别吗? 您可以使用应用程序范围在Spring容器中获得bean列表。

此外,您是否能够在一个Spring容器中运行多个Web服务器?如果是,那将是在单例范围内使用应用程序范围的原因,否则bean将通过两个服务器共享。

2 个答案:

答案 0 :(得分:2)

The documentation解释道:

  

这有点类似于Spring单例bean,但在两个重要方面有所不同:它是每个ServletContext的单例,而不是每个Spring' ApplicationContext' (或者在任何给定的Web应用程序中可能有多个),它实际上是公开的,因此可以作为ServletContext属性显示

答案 1 :(得分:0)

在应用程序范围内,容器为每个Web应用程序运行时创建一个实例。 应用范围几乎与单例范围相似。所以,区别是

应用程序范围的豆是每个ServletContext的单例,而单个作用域的bean 是每个ApplicationContext的单例。这意味着单个应用程序可以有多个应用程序上下文。

单顿酱豆

//load the spring configuration file
ClassPathXmlApplicationContext context =
        new ClassPathXmlApplicationContext("context.xml");

// retrieve bean from spring container
MyBean myBean = context.getBean("myBean", MyBean.class);
MyBean myBean2 = context.getBean("myBean", MyBean.class);

// myBean == myBean2 - output is true.