欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第二章 IoC Bean的初始化与延迟加载

程序员文章站 2022-05-21 22:33:01
...

在默认情况下,SpringApplicationContext容器在启动的时候,会自动实例化所有singletonBean并缓存在容器中。虽然启动时会花费一些时间,但带来两个好处:

1、对Bean提前实例化操作会及早发现一些潜在的配置问题;

2Bean以缓存的方式保存,当运行期使用到该Bean的时候无需再实例化,加快运行的效率。

如果用户不希望容器启动的时候提前实例化singletonBean,可以通过lazy-init属性进行控制:

<bean id="userDao" class="cn.framelife.spring.dao.impl.UserDaoImpl" scope="singleton" lazy-init="true"></bean>

也可以在beans标签中使用default-lazy-init对所有的singletonBean进行延迟加载:

<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
	default-lazy-init="true">

被设置为延迟加载的Bean在某些情况下依旧会提前实例化:如果这个Bean被其它需要提前实例化的Bean引用到,那么Spring也将忽略延迟加载设置。

一般我们不做延迟加载。