singleton (默认方式)
在每个Spring IoC容器中一个bean定义只有一个对象实例。默认情况下会在容器启动时初始化bean,但我们可以指定bean节点的lazy-init=“true”来延迟初始化bean,这时候,只有第一次获取bean会才初始化bean。如:
<bean id="xxx" class="cn.itcast.OrderServiceBean" lazy-init="true"/>
如果想对所有bean都应用延迟初始化,可以在根节点beans设置default-lazy-init=“true“(不推荐,不利于测试),如下:
<beans default-lazy-init="true“ ...>
prototype
每次从容器获取bean都是新的对象,当调用getBean方法时实例化bean对象。
<bean id="personService" class="zmc.PersonServicebean" scope="prototype"></bean>
以下方式为javaWeb中的作用域
.request
.session
.global session
指定Bean的初始化方法和销毁方法
<bean id="xxx" class="cn.itcast.OrderServiceBean" init-method="init" destroy-method="close"/>
init-method:当bean被实例化后,就会执行此方法。
Destory-method:当bean被销毁(也就是关闭Spring容器)之前,先执行此方法。
示例:
配置文件
<bean id="personService" class="zmc.PersonServicebean" destroy-method="close"></bean>
Bean类
Java
package zmc;
import zmcjk.PersonService;
public class PersonServicebean implements PersonService {
//销毁方法
public void close(){
System.out.println("执行销毁方法");
}
}
测试类:
AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
ctx.close();