首先是我原来的代码:
<bean name="user" class="com.sikiedu.bean.User" lazy-init="default" scope="prototype" init-method="userinit" destroy-method="userDestory"></bean>
然后是测试的代码:
@Test
public void Test3() {
ClassPathXmlApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
//scope="prototype" 多例 在获取时会创建新的对象
User u1=ac.getBean(User.class);
User u2=ac.getBean(User.class);
User u3=ac.getBean(User.class);
System.out.println(u1 == u2);
//关闭容器对象,触发Bean的 userDestory
ac.close();
}
大致观察没什么问题,运行后却是这样:
很明显和预期不符,并没有销毁容器后的输出。
经过查询发现问题出现在bean中的scope属性
修改后的代码:
<bean name="user" class="com.sikiedu.bean.User" lazy-init="default" init-method="userinit" destroy-method="userDestory">
删除了scope属性中的多例,解决问题