public class PrototypeBean {
public PrototypeBean() {
System.out.println("PrototypeBean constructor invoke...");
}
public void destory() {
System.out.println("PrototypeBean destory...");
}
public void init() {
System.out.println("PrototypeBean init...");
}
}
public class SingletonBean {
public SingletonBean() {
System.out.println("SingletonBean constructor invoke...");
}
public void init() {
System.out.println("SingletonBean init...");
}
public void destory() {
System.out.println("SingletonBean destory...");
}
}
<bean id="singletonBean" class="com.tz.test.spring.cycle.SingletonBean" init-method="init"
destroy-method="destory"/>
<bean id="prototypeBean" class="com.tz.test.spring.cycle.PrototypeBean" init-method="init"
destroy-method="destory" scope="prototype"/>
public static void main(String[] args) {
AbstractApplicationContext beanFactory = new ClassPathXmlApplicationContext("spring/cycle.xml");
beanFactory.getBean("singletonBean");
beanFactory.getBean("prototypeBean");
}
运行main方法,打印如下
SingletonBean constructor invoke...
SingletonBean init...
PrototypeBean constructor invoke...
PrototypeBean init...
都没有调destory方法
修改main方法,在最后一行加上
beanFactory.close();
执行后打印如下
SingletonBean constructor invoke...
SingletonBean init...
PrototypeBean constructor invoke...
PrototypeBean init...
SingletonBean destory...
scope=singleton的bean destory方法被调用