gpt4 book ai didi

java - spring中bean的destroy方法什么时候被调用?

转载 作者:行者123 更新时间:2023-11-30 03:32:01 24 4
gpt4 key购买 nike

这是用于存储有关特定用户的详细信息的 bean 类。它有两个方法,名为 init 和 destroy。 bean初始化和销毁​​时需要调用。

package org.springframework.HelloWorld.beans;

public class User {
private int userId;
private String userName;
private String address;
private String mobileNumber;

public User() {
super();
}

public User(int userId, String userName, String address, String mobileNumber) {
super();
this.userId = userId;
this.userName = userName;
this.address = address;
this.mobileNumber = mobileNumber;
}

public int getUserId() {
return userId;
}

public void setUserId(int userId) {
this.userId = userId;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getMobileNumber() {
return mobileNumber;
}

public void setMobileNumber(String mobileNumber) {
this.mobileNumber = mobileNumber;
}

@Override
public String toString() {
return "User [userId=" + userId + ", userName=" + userName
+ ", address=" + address + ", mobileNumber=" + mobileNumber
+ "]";
}

public void init(){
System.out.println("Initialized");
}

public void destroy(){
System.out.println("Destroyed");
}
}

这是我用过的主要方法。这里我从 Beans.xml 文件中获取 User 对象。

public static void main(String[] args) {
@SuppressWarnings("resource")
ApplicationContext ctx = new ClassPathXmlApplicationContext("Beans.xml");
User user = (User) ctx.getBean("user");
System.out.println(user);
user.setUserName("Gnanadurai Asudoss");
user.setAddress("Chxxxxx");
System.out.println(user);
user = (User) ctx.getBean("user");
System.out.println(user);
user=null;
}

下面是 Beans.xml 文件,这里我提到了 bean、init 方法和 destroy 方法。

<bean id="user" class="org.springframework.HelloWorld.beans.User" init-method="init" destroy-method="destroy">
<property name="userId" value="1"></property>
<property name="userName" value="Gnanadurai"></property>
<property name="address" value="Saxxxx"></property>
<property name="mobileNumber" value="xxxxxxxx49"></property>
</bean>

这是我得到的输出。这里你可以看到Initialized方法被调用,而Destroy方法没有被调用。

Initialized
User [userId=1, userName=Gnanadurai, address=Saxxx, mobileNumber=xxxxxxxx49]
User [userId=1, userName=Gnanadurai Asudoss, address=Chxxxx, mobileNumber=xxxxxxxx49]
User [userId=17505, userName=Gnanadurai Asudoss, address=Chxxxx, mobileNumber=xxxxxxxx49]

所以我不知道什么时候会调用 destroy 方法..你能告诉我什么时候会调用它吗?举个例子。

谢谢...

最佳答案

根据这篇文章,您需要关闭您的applicationContext,在此操作之后,您的销毁将被调用。 Related SO question

//Getting application context
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);

//cleaning context
((ClassPathXmlApplicationContext) context).close();

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

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