Spring中无状态和有状态bean的类比

时间:2011-10-29 15:08:26

标签: spring ejb-3.1

Spring bean有两种类型的范围(如果你没有考虑web的范围):singleton,这是默认的prototype。他们大致在上下文中实现单例和原型设计模式。

因此,如果bean具有原型范围,它可以保存一个独特的状态,如EJB中的有状态bean。当bean的范围是单例时,容器将只创建它的一个实例。所以我们可以说EJB 3.1中的单例bean是春天的单例bean的类比。

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

1 个答案:

答案 0 :(得分:3)

要么你可以使bean线程安全,单个bean就可以了(这是大多数情况)。

或者你不能,你将不得不使用原型。我在Spring原型bean和无状态EJB会话bean之间看到的区别是无状态会话bean被合并。但是在这些时代,每次汇集它们或创建一个新实例都不会产生太大的影响。每次创建一个新实例甚至可能有助于GC。