java - 引擎盖下原型(prototype)作用域 bean 的 Spring 实例化

标签 java spring

Spring 定义了不同的 bean 定义范围,其中一个是原型(prototype)范围,它在每次查找时都会提供一个新实例。

我有两个疑问..

  1. 在幕后,spring 如何创建一个新实例?
  2. 我听说,它使用 clone() 方法创建一个新实例,如果是,那么为什么,如果它使用 clone 提供一个新实例,那么克隆对象的状态会发生什么变化,因为 clone 将复制国家也是?

最佳答案

  1. 与任何其他 bean 一样:使用带有 @Autowired 注释的构造函数,如果没有则使用默认构造函数(如果定义了工厂方法,则使用默认构造函数)。

  2. 你听到的是错误的。大多数对象是不可克隆的,所以它只会通过这样做得到一个异常。这是没有意义的,因为

    • 它无法创建第一个实例
    • 所有实例都将与第一个实例相同,这显然不是我们想要的。

关于java - 引擎盖下原型(prototype)作用域 bean 的 Spring 实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664589/

相关文章:

java - 执行 SQL 的标准是什么?

java - 为什么 Spring @Configuration 类继承没有按预期工作?

java - 未使用 Spring Webflux 路由器功能

java - double 和 float 据类型的行为

Java - Java 中的 SendGrid 解析 API

java - jsp 上未显示 Action 属性

spring - 父类(super class)没有空构造函数,但没有给出参数。 Spring 集成

spring - 为什么@RunWith(SpringJUnit4ClassRunner.class) 不起作用?

java - 为什么事务在 Spring JPA 中没有回滚到所需的传播级别?

java - 使用 VTD-XML 的带有 & 符号的 XML 文件的 ParserException