我已经在bean的“销毁方法”中放入了sysout语句。当我运行示例代码时,sysout没有得到输出。这是否意味着销毁方法未得到调用?
测试类别:
package spring.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class InitTest { public static void main(String[] args) { ApplicationContext ctx = new ClassPathXmlApplicationContext("InitTestContext.xml"); InitTestBean bean = (InitTestBean)ctx.getBean("InitTestBean"); bean.display(); } }
The Bean
package spring.test; public class InitTestBean { private String prop1; private String prop2; public InitTestBean(String prop1, String prop2) { System.out.println("Instantiating InitTestBean"); this.prop1 = prop1; this.prop2 = prop2; } public void setProp1(String prop1) { System.out.println("In setProp1"); this.prop1 = prop1; } public void setProp2(String prop2) { System.out.println("In setProp2"); this.prop2 = prop2; } public String getProp1() { return prop1; } public String getProp2() { return prop2; } public void display() { System.out.println("Prop1 is " + prop1); System.out.println("Prop2 is " + prop2); } public void initialize(){ System.out.println("In initialize"); this.prop1 = "init-prop1"; this.prop2 = "init-prop2"; } public void teardown() { System.out.println("In teardown"); this.prop1 = null; this.prop2 = null; } }
配置文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean id="InitTestBean" class="spring.test.InitTestBean" init-method="initialize" destroy-method="teardown"> <constructor-arg value="Prop1" /> <constructor-arg value="Prop2" /> <property name="prop1" value="setProp1"/> <property name="prop2" value="setProp2"/> </bean> </beans>
你的示例不起作用,因为你没有关闭appcontext,只是让程序终止。
调用close()上下文,你将看到被调用的bean destroy-method。
close()