2014-07-08 2 views
2

Spring 컨테이너가 초기화되기 전에 클래스를 실행하는 방법이 있습니까?Spring이 초기화되기 전에 클래스를 시작하는 방법은 무엇입니까?

기본적으로 나는 응용 프로그램을 구성하는 항아리 전체에 흩어져있는 자원이 있습니다. 처음 응용 프로그램을 처음 실행하면 파일 시스템에 있지 않으므로 사람들은 때때로 이러한 구성 파일을 조정할 수 있어야합니다. 그래서 ... 편집 및 재 패키징 대신에, 각 jar 외부의 모든 리소스를 쉽게 변경할 수있는 추출 된 디렉토리 구조로 복사 할 수 있기를 원합니다. 나는 이것을 지금까지 구현했다. 그러나 Spring의 컨테이너가 초기화되기 전에 Spring이 초기화하려고 할 때 실제로이 작업을 수행 할 수 있어야합니다. 어떻게 할 수 있습니까?

웹 응용 프로그램 관점과 JUnit 테스트에서이 작업을 수행 할 수 있어야합니다.

+2

는 스프링 컨텍스트를 초기화하는 방법에 따라 달라? –

+0

서블릿 컨텍스트 리스너 사용 –

+1

서블릿 기반 웹 애플리케이션의 컨텍스트에 있습니까? –

답변

3

ServletContextListener 사용 : 스프링 servelt 전에 web.xml에 다음을 추가하십시오. YourListener의 모습

<listener> 
     <listener-class>your.full.className.YourListener</listener-class> 
</listener> 

:

public class YourListener implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent evt) { 
     //execute anything here. 
    } 
} 
+3

웹 응용 프로그램이 아닌 경우에는 어떻게해야합니까? –

관련 문제