2017-11-27 3 views
0

Windows 명령 프롬프트 (java -jar 사용)에서 스프링 부팅 응용 프로그램을 실행하고 Control-C를 눌러 프로세스를 종료하면 다음 콘솔 출력이 표시되고 프로세스가 열립니다.Control-C를 눌러 Windows에서 봄 부팅 응용 프로그램 프로세스를 종료하는 방법?

2017-11-27 20:15:22,713 INFO [Thread-11] (AnnotationConfigEmbeddedWebApplicationContext:984) - Closing org.springframework.boot[email protected]6057aebb: startup date [Mon Nov 27 20:14:22 IST 2017]; parent: org.spring[email protected]2df9b86 

다음 코드를 사용하여 ContextClosedEvent를 수신합니다.

@Component 
public class ListenerClass { 
     @EventListener 
     public void handleContextClose(ContextClosedEvent event) { 
      shutdown(); // This method has System.exit(SpringApplication.exit(ctx)); inside it 
     } 
    } 

나는 상기 ListenerClass에 다음 코드를 추가했지만, 그것은이 문제가 해결되지 않은 : 제어-C를 누르면

@EventListener 
    public void handleContextStop(ContextStoppedEvent event) { 
     shutdown(); 
    } 

가 어떻게 종료 할 수있는 응용 프로그램을 일으킬 수 있습니다 ?

답변

0

리스너에 접근하지 못했습니다 (디버거를 사용하여 확인). 그렇지 않으면 System.exit이 모든 스레드를 죽일 것입니다. 그렇지만 나쁜 관행입니다.

jvisualvm을 통해 JVM에 연결하고 실행해야하며^C

을 클릭하면 라이브 스레드를 확인해야합니다.