2013-10-15 32 views
8

假设有两个类ClassA和ClassB。让我们假设ClassB依赖于ClassA。在配置文件中,如果我们将ClassA的范围定义为singleton,将ClassB的范围定义为Prototype,那么每次创建ClassA的bean实例时,ClassB的实例会发生什么?每次返回ClassA的实例时,是否返回相同的ClassB实例或创建新实例?Spring bean的作用域。单例和原型

谢谢!!!

+4

那么多的春季程序员......:D。在原型bean中注入单例bean将导致原型bean的不同实例使用单例bean的相同实例。对于相反的情况(在Singleton中注入一个原型bean),如果默认情况下会使用原型bean的同一实例来提供单例bean(参见[本文])(http://prasanthnath.wordpress.com/2013/ 03/21/injection-a-prototype-bean-into-a-singleton-bean /)获取更多信息)。 –

回答

5

如果ClassB是原型,总是创建一个ClassB的新实例,它在创建时不会照顾其他类。

因此,ClassB是原型和ClassA单例,您可以在某些时候在您的应用程序中拥有N个ClassB的实例,并且只有1个ClassA。

在你的情况下,作为ClassA的只有一个实例将您的应用程序生命周期的存在,只会有一个实例ClassB的,这将是其他豆类在您的应用程序引用的其他任何ClassB的不同

3

每当我们创建ClassA的bean实例 时,ClassB的实例会发生什么?

由于ClassA是单例,一个单一实例将的ClassB所有实例之间共享。

是否返回同一个ClassB实例或创建新实例 每次返回ClassA的实例?

我想在这里你的意思将在同一ClassA的实例被退回或新的实例被创建 返回ClassB的每个时间点?

每创建一个实例ClassB,共享的ClassA实例将被(重新)使用。

+0

我确定同样的ClassA实例会返回...但不确定ClassB的实例。谢谢!!! –

2

每当我们创建ClassA的bean实例 时,ClassB的实例会发生什么?

没什么,如果ClassA的是单将只有一次实例化。

是否返回同一个ClassB实例或创建新实例 每次返回ClassA的实例?

不同的实例,因为它是一个原型bean。但是因为ClassA是单身人士,所以每次都会以同样的方式实现(取决于你提到的这些类之间的关系)

相关问题