Spring bean 有 2 种类型的作用域(如果不考虑 web 作用域):singleton,这是默认的,以及prototype. 粗略地说,他们在上下文中实现了单例和原型设计模式。
因此,如果 bean 具有原型作用域,它就可以像 EJB 中的有状态 bean 一样保持唯一的状态。当 bean 的范围是单例时,容器将仅创建它的一个实例。因此我们可以说 EJB 3.1 中的单例 Bean 类似于 Spring 中的单例 Bean。
但是如何在 Spring 中获得无状态 bean 的功能(我指的是 EJB 容器中的无状态 bean 池,并且每个线程都有一个唯一的无状态 bean 实例)?
您可以使 bean 成为线程安全的,并且单例 bean 就可以(这是大多数情况)。
或者你不能,你就必须使用原型。我发现 Spring 原型 bean 和无状态 EJB 会话 bean 之间的区别在于无状态会话 bean 是池化的。但在当今时代,每次将它们集中起来或创建一个新实例并不会产生太大的区别。每次创建一个新实例甚至可能有助于 GC。
| 归档时间: |
|
| 查看次数: |
3269 次 |
| 最近记录: |