在ApplicationContext
容器中,当容器一启动时,所有的bean(单例的)都会被创建和注入依赖,这也被视为IOC容器启动过程中的一个步骤。
那如何让一个bean在需要的时候再被创建,而不是容器一加载的时候呢?
在配置文件的bean
标签中,将lazy-init
属性设置为true
<bean id="lazy" class="com.foo.ExpensiveToCreateBean" lazy-init="true"/>
<bean name="not.lazy" class="com.foo.AnotherBean"/>
这样,当applicationContext容器启动时,该Bean不会初始化,而是当需要使用这个类的时候才会创建实例
还有另外一种情况,就是这个被懒加载的Bean,它被不是一个懒加载的bean所依赖,那么在容器启动时,即使它是懒加载 的,也会被实例化。
全局懒加载
<beans default-lazy-init="true">
<!-- no beans will be pre-instantiated... -->
</beans>
在beans
标签中配置default-lazy-init="true"
属性即可。
原文地址:https://www.cnblogs.com/heliusKing/p/11261964.html
时间: 2024-11-08 20:17:29