假设有两个类 ClassA 和 ClassB。让我们假设 ClassB 依赖于 ClassA。在配置文件中,如果我们将 ClassA 的范围定义为单例,而将 ClassB 的范围定义为 Prototype,那么每次创建 ClassA 的 bean 实例时,ClassB 的实例会发生什么?每次返回 ClassA 的实例时,是否会返回相同的 ClassB 实例或创建新实例?
谢谢!!!
如果 ClassB 是原型,则总是创建一个新的 ClassB 实例,它在创建时不关心其他类。
所以 ClassB 是原型和 ClassA 单例,在某些时候,您的应用程序中可能有 N 个 ClassB 实例和只有 1 个 ClassA。
在您的情况下,由于您的应用程序生命周期中仅存在一个 ClassA 实例,因此它将只有一个实例 ClassB 与您的应用程序中其他 bean 引用的任何其他 ClassB 不同
每次我们创建 ClassA 的 bean 实例时,ClassB 的实例会发生什么?
由于ClassA
是单例,单个实例将在 的所有实例之间共享ClassB
。
每次返回 ClassA 的实例时,是否会返回相同的 ClassB 实例或创建新实例?
我认为您的意思是每次返回 ClassB 实例时都会返回相同的 ClassA 实例还是创建新实例?
每次ClassB
创建一个实例时,共享ClassA
实例将被(重新)使用。
每次我们创建 ClassA 的 bean 实例时,ClassB 的实例会发生什么?
没什么,如果 ClassA 是单例的,它只会被实例化一次。
每次返回 ClassA 的实例时,是否会返回相同的 ClassB 实例或创建新实例?
不同的实例,因为它是一个原型 bean。但是由于 ClassA 是单例的,因此每次都会以相同的方式实例化。(取决于您提到的这些类之间的关系)