Java Spring bean 作用域:单例 vs 应用

Jas*_*oor 7 spring

谁能解释这两个 Spring bean 范围之间的区别?我熟悉单例模式。

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

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

JB *_*zet 5

文档解释了它:

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

  • 重读。一个 Web 应用程序只有一个 ServletContext。但它可以有多个 Spring 应用程序上下文(通常,每个 Spring 调度程序 servlet 一个根上下文和一个子 Web 上下文) (2认同)