[java] Spring ApplicationContext를 닫는 방법은 무엇입니까?

내 응용 프로그램이 완료되면 스프링 컨텍스트를 닫고 싶습니다.
관련 코드에 ApplicationContext참조가 있지만 close방법을 찾을 수 없습니다 .



답변

당신의 다운 캐스트 ApplicationContextConfigurableApplicationContext있는 정의 close()방법 :

((ConfigurableApplicationContext)appCtx).close();


답변

아래와 같이 JVM에 종료 후크를 등록해야합니다.

((AbstractApplicationContext)appCtx).registerShutdownHook();

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


답변

아래와 같이 컨텍스트를 초기화하면

ApplicationContext context = new ClassPathXmlApplicationContext(beansXML);

이와 같은 깨끗한 컨텍스트

((ClassPathXmlApplicationContext) context).close();


답변

Java SE 7 이상인 경우 닫지 말고 try-with-resources를 사용하여 각 리소스가 명령문 끝에서 닫히도록합니다.

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


답변

ApplicationContext개체 를 닫는 단계

  1. Cast the ApplicationContextObject to ConfigurableApplicationContextobject를 입력 합니다.
  2. 그런 다음 닫기 객체를 호출하십시오.

예:

 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();


답변