gpt4 book ai didi

java - 如何关闭 ClassPathXmlApplicationContext

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:48 26 4
gpt4 key购买 nike

我有这个代码...

public static void main(String[] args)
{
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
}

applicationContext.xml

<?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:context="http://www.springframework.org/schema/context"
xmlns:jaxws="http://cxf.apache.org/jaxws"
xmlns:jaxrs="http://cxf.apache.org/jaxrs"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://cxf.apache.org/jaxws
http://cxf.apache.org/schemas/jaxws.xsd
http://cxf.apache.org/jaxrs
http://cxf.apache.org/schemas/jaxrs.xsd">
</beans>

代码退出,但 JVM 从未停止。

有人知道为什么它不会停止吗?

我还尝试了以下新的 Main 方法,但它仍在运行。

公共(public)静态无效主(字符串[]参数) { ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); ((ConfigurableApplicationContext)context).registerShutdownHook(); ((ConfigurableApplicationContext)context).stop(); System.out.println("现在退出..."); }

如果我暂停 JVM,它会显示 4 个线程。

1 使用 TimerThread.run()

3 使用 ScheduledThreadPoolExecutor.take()

最佳答案

ConfigurableApplicationContext 接口(interface)(由 ClassPathXmlApplicationContext 实现)具有一个 close 方法,您需要调用该方法才能正确关闭 JVM。

更多信息可参见 here.

关于java - 如何关闭 ClassPathXmlApplicationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28993501/

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