내 응용 프로그램이 완료되면 스프링 컨텍스트를 닫고 싶습니다.
관련 코드에 ApplicationContext참조가 있지만 close방법을 찾을 수 없습니다 .
답변:
당신의 다운 캐스트 ApplicationContext에 ConfigurableApplicationContext있는 정의 close()방법 :
((ConfigurableApplicationContext)appCtx).close();
AbstractApplicationContext클래스와 마찬가지로 ConfigurableApplicationContext해당 클래스에 의해 구현 된 인터페이스이므로 대부분의 경우 후자를 사용하는 것이 좋습니다.
ConfigurableApplicationContext지금 연장 Closable(이 변경에 만들어진 버전을 알고 있지만, 4.2.x를위한 문서는 3.0.x 버전이 있지 않는 것을 동시에 표시되지 않습니다) 훨씬 짧은 버전입니다 ((Closable)context).close();.
AutoCloseable구현 AutoCloseable이 있습니다. 즉, 인터페이스가 보이는 변수에 컨텍스트를 저장하는 한 이제 try-with-resources를 사용할 수 있습니다. 즉try (ConfigurableApplicationContext context = new ....) { /* your code goes here */ } // context is closed when you leave the try block
아래와 같이 JVM에 종료 후크를 등록해야합니다.
((AbstractApplicationContext)appCtx).registerShutdownHook();
자세한 내용은 다음을 참조하십시오. Spring Manual : 3.6.1.6 웹이 아닌 애플리케이션에서 Spring IoC 컨테이너를 정상적으로 종료
아래와 같이 컨텍스트를 초기화하면
ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);
이와 같은 깨끗한 컨텍스트
((ClassPathXmlApplicationContext) context).close();
ApplicationContext개체 를 닫는 단계
ApplicationContextObject to ConfigurableApplicationContextobject를 입력 합니다.예:
ApplicationContext context = new ClassPathXmlApplicationContext("mybeans.xml");
((ConfigurableApplicationContext)context ).close();
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("SpringCnf.xml");
Resturant rstro1=(Resturant)context.getBean("resturantBean");
rstro1.setWelcome("hello user");
rstro1.welcomeNote();
((ClassPathXmlApplicationContext) context).close();
AbstractApplicationContext