spring_3
1:
三種實例化 bean 的方式:
(1): 使用類構(gòu)造器實例化
<bean id="personService" class="com.rui.personServiceBean"/>
(2):使用靜態(tài)工廠方法實例化
<bean id="personService" class="com.rui.personServiceBeanFactory" factory-method="createPersonServiceBean"/>
public class PersonServiceFactory {
public static PersonService createPersonService(){
return new PersonServiceBean();
}
}
(3): 使用實例工廠方法實例化:
<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 默認是單實例 singleton
3:
Bean的作用域:
(1): singleton
此為默認值,在每個Spring IOC容器中的一個bean定義只有一個對象實例.默認情況下會在容器啟動時初始化bean.但我們可以指定Bean節(jié)點的lazy-init="true"來延遲初始化bean,這時候,只有第一次獲取bean時才初始化
bean 如:
<bean id="xxx" class="com.rui.PersonServiceBean" lazy-init="true"/>
如果想對所有bean都應(yīng)用延遲初始化,可以在根節(jié)點beans設(shè)置default-lazy-init="true",如下
<beans default-lazy-init="true" ... >
(2): prototype
每次從容器中獲取bean都是新的對象
(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(){
// 在實例化時執(zhí)行
}
public void init(){
// 在初始化時執(zhí)行
}
public void destory(){
// 在銷毀時執(zhí)行
}
}
使Spring 容器正常的關(guān)閉
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ctx.close(); // 調(diào)用 .close() 方法以使 Spring 容器正常的關(guān)閉