8

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

谢谢!!!

4

3 回答 3

5

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

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

在您的情况下,由于您的应用程序生命周期中仅存在一个 ClassA 实例,因此它将只有一个实例 ClassB 与您的应用程序中其他 bean 引用的任何其他 ClassB 不同

于 2013-10-15T13:48:47.143 回答
3

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

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

每次返回 ClassA 的实例时,是否会返回相同的 ClassB 实例或创建新实例?

我认为您的意思是每次返回 ClassB 实例时都会返回相同的 ClassA 实例还是创建新实例?

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

于 2013-10-15T13:49:36.177 回答
2

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

没什么,如果 ClassA 是单例的,它只会被实例化一次。

每次返回 ClassA 的实例时,是否会返回相同的 ClassB 实例或创建新实例?

不同的实例,因为它是一个原型 bean。但是由于 ClassA 是单例的,因此每次都会以相同的方式实例化。(取决于您提到的这些类之间的关系)

于 2013-10-15T13:50:15.890 回答