当下面的豆子会被实施时?
<bean id="a" class="Someclass" lazy-init="true" scope="singleton"/>
Spring是否会忽略&#34; lazy-init&#34;在这种情况下属性(因为我们使用单例范围)?
加载bean定义时,将创建一个新实例。有人可以确认吗?
谢谢。
答案 0 :(得分: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。
答案 1 :(得分:0)
在这种情况下,Spring是否会忽略“lazy-init”属性(因为我们 使用单例范围)?
不,它不会忽略,只有在第一次访问对象时才会创建对象,而不是在容器启动期间创建对象。
当bean定义为时,将创建一个新实例 加载。任何人都可以确认吗?
不,只有在实际需要bean时才会创建实例。
你可以在here的春季文档中引用相同的点,下面是文本(强调我的)
延迟初始化的bean告诉IoC容器创建一个bean 实例首次请求时,而不是在启动时。 但是,当一个延迟初始化的bean是一个非延迟初始化的单例bean的依赖项时,ApplicationContext会在启动时创建一个延迟初始化的bean ,因为它必须满足单例的依赖关系。惰性初始化的bean被注入到其他地方没有延迟初始化的单例bean中。