1. 程式人生 > >第二章 IoC Bean的初始化與延遲載入

第二章 IoC Bean的初始化與延遲載入

在預設情況下,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也將忽略延遲載入設定。

一般我們不做延遲載入。