我在 Intellij(13.1.5 on linux) 中使用bootRun任务运行一个spring启动应用程序,我试图在生命周期回调中关闭一个监听器线程,但是当在Intellij中停止应用程序时,我发现我的监听器线程仍在运行并记录 .

  • 在控制台中:

“与目标虚拟机断开连接,地址:...,传输:'socket'上午6:39:22:外部任务执行完成'bootRun' . ”

  • 然后我做了ps grep并终止进程,然后才控制台打印:

“2016-03-28 06:39:59.606 INFO 7740 --- [Thread-1] ationConfigEmbeddedWebApplicationContext:关闭org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@657617e6:... 2016-03-28 06:39 :59.611 INFO 7740 --- [Thread-1] osjeaAnnotationMBeanExporter:在关闭时取消注册JMX暴露的bean“

My Questions:

  • 为什么要停止Intellij中的应用程序而不关闭应用程序上下文?

  • Accodring to Doc,Spring网络应用程序自动注册关机钩子 . 但是我试过@PreDestroy,destroMethod,并实现了LifeCycle,为什么没有人被调用?