내 응용 프로그램이 완료되면 스프링 컨텍스트를 닫고 싶습니다.
관련 코드에 ApplicationContext
참조가 있지만 close
방법을 찾을 수 없습니다 .
답변
당신의 다운 캐스트 ApplicationContext
에 ConfigurableApplicationContext
있는 정의 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
개체 를 닫는 단계
- Cast the
ApplicationContext
Object toConfigurableApplicationContext
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();