복붙노트

[SPRING] 스프링 ApplicationContext를 닫는 방법?

SPRING

스프링 ApplicationContext를 닫는 방법?

신청이 끝나면 봄의 문맥을 닫고 싶습니다. 관련 코드에 ApplicationContext 참조가 있지만 close 메소드를 찾을 수 없습니다.

해결법

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

    1.close () 메소드를 정의하는 ConfigurableApplicationContext로 ApplicationContext를 다운 캐스트합니다.

    close () 메소드를 정의하는 ConfigurableApplicationContext로 ApplicationContext를 다운 캐스트합니다.

    ((ConfigurableApplicationContext)appCtx).close();
    
  2. ==============================

    2.다음과 같이 JVM에 종료 훅을 등록해야합니다.

    다음과 같이 JVM에 종료 훅을 등록해야합니다.

    ((AbstractApplicationContext)appCtx).registerShutdownHook();
    

    자세한 내용은 다음을 참조하십시오 : Spring Manual : 3.6.1.6 Spring IoC 컨테이너를 웹 애플리케이션이 아닌 다른 시스템에서 정상적으로 종료하기

  3. ==============================

    3.아래처럼 컨텍스트를 초기화하면

    아래처럼 컨텍스트를 초기화하면

    ApplicationContext context = new ClassPathXmlApplicationContext(beansXML); 
    

    이와 같은 깨끗한 컨텍스트

    ((ClassPathXmlApplicationContext) context).close();
    
  4. ==============================

    4.Java SE 7 이상이 닫히지 않으면 try-with-resources를 사용하여 명령문의 끝에 각 리소스가 닫히도록하십시오.

    Java SE 7 이상이 닫히지 않으면 try-with-resources를 사용하여 명령문의 끝에 각 리소스가 닫히도록하십시오.

    try(final AbstractApplicationContext applicationContext = new ClassPathXmlApplicationContext(new String[]{"classpath*:META-INF/spring/*.xml" }))
    {
         //write your code
    }
    
  5. ==============================

    5.ApplicationContext 개체를 닫는 단계

    ApplicationContext 개체를 닫는 단계

    예:

     ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");
    
    ((ConfigurableApplicationContext)context ).close();
    
  6. from https://stackoverflow.com/questions/14423980/how-to-close-a-spring-applicationcontext by cc-by-sa and MIT license