gpt4 book ai didi

java - 什么时候调用 spring beans 销毁方法?

转载 作者:IT老高 更新时间:2023-10-28 13:48:22 31 4
gpt4 key购买 nike

我在 bean 的“destroy-method”中添加了一个 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();
}
}

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-methods 被调用。

关于java - 什么时候调用 spring beans 销毁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4460384/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com