Spring bean有两种类型的范围(如果你没有考虑web的范围):singleton
,这是默认的prototype
。他们大致在上下文中实现单例和原型设计模式。
因此,如果bean具有原型范围,它可以保存一个独特的状态,如EJB中的有状态bean。当bean的范围是单例时,容器将只创建它的一个实例。所以我们可以说EJB 3.1中的单例bean是春天的单例bean的类比。
但是我如何才能在Spring中获得无状态bean的功能(我指的是在EJB容器中汇集无状态bean以及每个线程都有一个无状态bean的唯一实例)?
答案 0 :(得分:3)
要么你可以使bean线程安全,单个bean就可以了(这是大多数情况)。
或者你不能,你将不得不使用原型。我在Spring原型bean和无状态EJB会话bean之间看到的区别是无状态会话bean被合并。但是在这些时代,每次汇集它们或创建一个新实例都不会产生太大的影响。每次创建一个新实例甚至可能有助于GC。