2012-09-30 36 views
3

Spring定义了不同范围的bean定义,其中一个是原型范围,它在每次查找时都给出一个新实例。引擎盖下的原型范围bean的弹出实例化

我有一个关于两份疑惑..

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

回答

6
  1. 像任何其他豆:使用具有@Autowired注释的构造函数,或默认的,如果(如果定义或工厂方法)没有任何。

  2. 你听到的是错误的。大多数对象不可复制,所以它只会通过这样做来获得异常。而这也就没有什么意义,因为

    • 它不会是能够创造一审
    • 所有实例将是一样的第一个,这显然不是什么都想。
0

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