1:
三种实例化 bean 的方式:
(1): 使用类构造器实例化
<bean id="personService" class="com.rui.personServiceBean"/>
(2):使用静态工厂方法实例化
<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节点的lazy-init="true"来延迟初始化bean,这时候,只有第一次获取bean时才初始化
bean 如:
<bean id="xxx" class="com.rui.PersonServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置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(){
// 在实例化时执行
}
public void init(){
// 在初始化时执行
}
public void destory(){
// 在销毁时执行
}
}
使Spring 容器正常的关闭
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ctx.close(); // 调用 .close() 方法以使 Spring 容器正常的关闭