2017-03-26 39 views
0

当下面的豆将instanciated?Instanciate与单身职责范围的豆

<bean id="a" class="Someclass" lazy-init="true" scope="singleton"/> 

在这种情况下Spring是否忽略了“lazy-init”属性(因为我们使用了单例作用域)?

加载bean定义时将创建一个新实例。任何人都可以确认吗?

谢谢。

回答

0

<bean id="a" class="Someclass" lazy-init="true" scope="singleton"/> 

<bean id="a" class="Someclass" lazy-init="true"/> 

相同。 spring bean的默认范围是singleton。所以它绝对不会忽略这个属性。

lazy-init="true"在启动时不会创建您的bean。你的bean只在被请求时才会被创建。

0

在这种情况下,Spring是否忽略“lazy-init”属性(因为我们的 使用单例范围)?

不,它不会忽略,只有当它被访问一次,而不是在容器中启动的对象将被创建。

加载bean定义为 时,将创建一个新实例。任何人都可以证实吗?

不,只有在实际需要bean时才会创建实例。

您可以从here指在春天文档的相同点和下方是文本(重点煤矿)

懒初始化豆告诉IoC容器,首先,当创建一个bean 实例要求,而不是在启动然而,当一个惰性初始化bean是一个未经过延迟初始化的单例bean的依赖时,ApplicationContext在启动时创建了延迟初始化bean,因为它必须满足单例的依赖关系。懒惰初始化的bean被注入到其他地方的单身bean中,而不是延迟初始化的。