spring_3
1:
三種實(shí)例化 bean 的方式:
(1): 使用類構(gòu)造器實(shí)例化
<bean id="personService" class="com.rui.personServiceBean"/>
(2):使用靜態(tài)工廠方法實(shí)例化
<bean id="personService" class="com.rui.personServiceBeanFactory" factory-method="createPersonServiceBean"/>
public class PersonServiceFactory {
public static PersonService createPersonService(){
return new PersonServiceBean();
}
}
(3): 使用實(shí)例工廠方法實(shí)例化:
<bean id="personServiceFactory" class="com.rui.PersonServiceBeanFactory"/>
<bean id="personService" factory-bean="personServiceFactory" factory-method="createPersonServiceBean"/>
public class PersonServiceFactory {
public PersonService createPersonService(){
return new PersonServiceBean();
}
}
2:
在交給Spring管理的bean 默認(rèn)是單實(shí)例 singleton
3:
Bean的作用域:
(1): singleton
此為默認(rèn)值,在每個(gè)Spring IOC容器中的一個(gè)bean定義只有一個(gè)對(duì)象實(shí)例.默認(rèn)情況下會(huì)在容器啟動(dòng)時(shí)初始化bean.但我們可以指定Bean節(jié)點(diǎn)的lazy-init="true"來延遲初始化bean,這時(shí)候,只有第一次獲取bean時(shí)才初始化
bean 如:
<bean id="xxx" class="com.rui.PersonServiceBean" lazy-init="true"/>
如果想對(duì)所有bean都應(yīng)用延遲初始化,可以在根節(jié)點(diǎn)beans設(shè)置default-lazy-init="true",如下
<beans default-lazy-init="true" ... >
(2): prototype
每次從容器中獲取bean都是新的對(duì)象
(3): request
(4): session
(5): global session
4:
指定 bean 的初始化和銷毀方法
在XML文件中指定
<bean id="" class="" lazy-init="false"
init-method="init"
destory-method="destory" />
public class PersonServiceBean(){
public PersonServiceBean(){
// 在實(shí)例化時(shí)執(zhí)行
}
public void init(){
// 在初始化時(shí)執(zhí)行
}
public void destory(){
// 在銷毀時(shí)執(zhí)行
}
}
使Spring 容器正常的關(guān)閉
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ctx.close(); // 調(diào)用 .close() 方法以使 Spring 容器正常的關(guān)閉
posted on 2011-01-05 20:55 calmJava 閱讀(72) 評(píng)論(0) 編輯 收藏