내 응용 프로그램이 완료되면 스프링 컨텍스트를 닫고 싶습니다.
관련 코드에 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
개체 를 닫는 단계
ApplicationContext
Object to ConfigurableApplicationContext
object를 입력 합니다.예:
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