Spring 定义了不同的 bean 定义范围,其中一个是原型(prototype)范围,它在每次查找时都会提供一个新实例。
我有两个疑问..
- 在幕后,spring 如何创建一个新实例?
- 我听说,它使用 clone() 方法创建一个新实例,如果是,那么为什么,如果它使用 clone 提供一个新实例,那么克隆对象的状态会发生什么变化,因为 clone 将复制国家也是?
最佳答案
与任何其他 bean 一样:使用带有 @Autowired 注释的构造函数,如果没有则使用默认构造函数(如果定义了工厂方法,则使用默认构造函数)。
你听到的是错误的。大多数对象是不可克隆的,所以它只会通过这样做得到一个异常。这是没有意义的,因为
- 它无法创建第一个实例
- 所有实例都将与第一个实例相同,这显然不是我们想要的。
关于java - 引擎盖下原型(prototype)作用域 bean 的 Spring 实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664589/