在引擎盖下的原型范围豆的春季实例化

时间:2012-09-30 19:58:29

标签: java spring

Spring定义了不同的bean定义范围,一个是原型范围,它在每次查找时都会给出一个新实例。

我有两个疑问......

  1. 在引擎盖下,spring如何创建一个新实例?
  2. 我听说过,它使用clone()方法创建一个新实例,如果是,那么为什么以及如果它使用clone来提供一个新实例,那么克隆对象的状态会发生什么,因为clone会复制国家呢?

2 个答案:

答案 0 :(得分:6)

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

  2. 你听到的是错的。大多数对象都不可复制,因此只能通过这样做获得异常。

    ,这没有任何意义
    • 它无法创建第一个实例
    • 所有实例都与第一个实例相同,这显然不是想要的。

答案 1 :(得分:0)

Spring使用反射机制来创建新实例。 Spring,首先查找单例映射,如果没有找到实例,则使用bean定义创建新实例,它将应用定义的生命周期。 所以你听到的是错的。