Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Spring启动应用程序不能正常退出?_Java_Spring_Spring Mvc_Intellij Idea_Spring Boot - Fatal编程技术网

Java 为什么Spring启动应用程序不能正常退出?

Java 为什么Spring启动应用程序不能正常退出?,java,spring,spring-mvc,intellij-idea,spring-boot,Java,Spring,Spring Mvc,Intellij Idea,Spring Boot,我正在使用Intellij(Linux上的13.1.5)中的bootRun任务运行Spring启动应用程序,我正在尝试关闭生命周期回调中的侦听器线程,但是在Intellij中停止应用程序时,我发现我的侦听器线程仍在运行并记录日志 在控制台中: 已断开与目标VM的连接,地址:…,传输:'套接字' 上午6:39:22:外部任务执行已完成“启动运行”。” 然后我做了ps grep并终止了这个过程, 只有控制台才会打印: “2016-03-28 06:39:59.606信息7740---[Thread

我正在使用Intellij(Linux上的13.1.5)中的
bootRun
任务运行Spring启动应用程序,我正在尝试关闭生命周期回调中的侦听器线程,但是在Intellij中停止应用程序时,我发现我的侦听器线程仍在运行并记录日志

  • 在控制台中: 已断开与目标VM的连接,地址:…,传输:'套接字' 上午6:39:22:外部任务执行已完成“启动运行”。”

  • 然后我做了ps grep并终止了这个过程, 只有控制台才会打印: “2016-03-28 06:39:59.606信息7740---[Thread-1]ationConfigEmbeddedWebApplicationContext:关闭org.springframework.boot.context.embedded。AnnotationConfigEmbeddedWebApplicationContext@657617e6:…2016-03-28 06:39:59.611信息7740---[Thread-1]o.s.j.e.a.注释MBeanExporter:在关机时注销JMX暴露的bean”

  • 我的问题:

  • 为什么在Intellij中停止应用程序而不关闭应用程序上下文
  • 根据文档,SpringWeb应用程序会自动注册关机挂钩。但是我已经尝试了
    @PreDestroy
    销毁方法
    ,并实现了
    生命周期
    ,为什么它们都没有被调用

  • 我也有同样的问题。您应该单击退出图标(请参阅),而不是停止,以获得正常的关闭,但它仍然没有调用我的@PreDestroy方法。我还尝试了实现DisposableBean和创建applicationListener()。什么都不管用@杰克·罗布:我不确定这是否行得通。OP正在执行bootRun,这是一项使用SpringBoot的现成任务。由于spring boot的特性,web服务器是嵌入式的,因此intellij甚至不会担心web服务器正在运行。它只会看到一个正在运行的gradle任务,因为它使一个JAR不是WARYes,正如我所说的,它不工作。我不是在建议解决方案。作为一种解决方法,您可以使用执行器的端点触发正常关机。