spring - Spring 中无状态和有状态 Bean 的类似物

标签 spring ejb-3.1

Spring bean 有 2 种类型的作用域(如果不考虑 Web 作用域):singleton(默认)和 prototype。粗略地说,他们在上下文中实现了单例和原型(prototype)设计模式。

因此,如果 bean 具有原型(prototype)作用域,那么它可以像 EJB 中的有状态 bean 一样保持唯一的状态。当 bean 的范围是单例时,容器将仅创建它的一个实例。因此我们可以说 EJB 3.1 中的单例 Bean 类似于 Spring 中的单例 Bean。

但是我如何才能在 Spring 中获得无状态 bean 的功能(我指的是 EJB 容器中的无状态 bean 池以及每个线程都有无状态 bean 的唯一实例)?

最佳答案

要么您可以使 bean 线程安全,并且单例 bean 就可以(这是大多数情况)。

或者你不能,你就必须使用原型(prototype)。我发现 Spring 原型(prototype) bean 和无状态 EJB session bean 之间的区别在于无状态 session bean 是池化的。但在当今时代,每次将它们集中起来或创建一个新实例并不会产生太大的区别。每次创建一个新实例甚至可能有助于 GC。

关于spring - Spring 中无状态和有状态 Bean 的类似物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939702/

相关文章:

java - Spring hibernate : TypedQuery NullPointerException

javax.naming.NameNotFoundException : Name "ilog.rules.res.session.impl.ejb3.IlrStatelessSessionLocal" not found in context "ejblocal:"

java - EJB 3.1 - 在 EJB 中使用 @EJB - 可能吗?

dependency-injection - 无状态 EJB 未注入(inject)消息驱动 bean (MDB)

java - 如何在耳朵中为EJB定义自己的JNDI名称

java - ElasticSearch在Java中排序的条件

java - 返回除 null 之外的任何内容

spring - 在 IntelliJ 中同时在 tomcat 上运行 2 个应用程序的具体步骤是什么?

spring - 为什么不遵守 gzip 最小响应大小?

java - Jboss 7 摧毁 Singleton EJB