복붙노트

[SPRING] 스프링 2.5에서 셧다운 훅 등록하기

SPRING

스프링 2.5에서 셧다운 훅 등록하기

콩 종료 메서드를 파괴하는 호출하지 않는 봄 응용 프로그램이 있습니다. beanRefFactory에서 인스턴스화로 인한 참조를 보았습니다.이 문제는 응용 프로그램 컨텍스트에서 registerShutdownHook ()을 수동으로 호출하여 우회 될 수 있습니다.이 메서드는 2.0에서 2.5 사이의 스프링에서 사라진 것처럼 보입니다.

누군가가 이것이 지금 어떻게 행해지는 방향으로 나를 가리킬 수 있습니까?

감사.

해결법

  1. ==============================

    1.이 메소드는 여전히 ConfigurableApplicationContext에서 사용할 수 있으며 AbstractApplicationContext로 구현됩니다.

    이 메소드는 여전히 ConfigurableApplicationContext에서 사용할 수 있으며 AbstractApplicationContext로 구현됩니다.

    그래서 당신은 이것을 할 수 있을지도 모릅니다.

    ApplicationContext ctx = ...;
    if (ctx instanceof ConfigurableApplicationContext) {
        ((ConfigurableApplicationContext)ctx).registerShutdownHook();
    }
    

    또는 응용 프로그램을 닫거나 자체 셧다운 훅을 사용하는 동안 ((ConfigurableApplicationContext) ctx) .close ()를 호출 할 수 있습니다.

    Runtime.getRuntime().addShutdownHook(new Thread() {
        public void run(){
           if (ctx instanceof ConfigurableApplicationContext) {
               ((ConfigurableApplicationContext)ctx).close();
           }
        }
     });
    
  2. ==============================

    2.너무 많은 upvotes하지만 두 번째 진술은 완전히 잘못되었습니다, java에서 system.exit은 shutdownhook에 도달하기 전에 스프링을 종료 할 것입니다. 올바른 방법은이 4 가지 방법입니다.

    너무 많은 upvotes하지만 두 번째 진술은 완전히 잘못되었습니다, java에서 system.exit은 shutdownhook에 도달하기 전에 스프링을 종료 할 것입니다. 올바른 방법은이 4 가지 방법입니다.

    1 InitializingBean 및 DisposableBean 콜백 인터페이스 2 특정 동작에 대한 기타 Aware 인터페이스 bean 설정 파일에서 3 개의 커스텀 init ()과 destroy () 메소드 4 @PostConstruct 및 @PreDestroy 주석

    여기를 클릭하십시오!

  3. from https://stackoverflow.com/questions/1827212/registering-a-shutdown-hook-in-spring-2-5 by cc-by-sa and MIT license