ApplicationContext 생성시 xml 위치가 일반적인 컴파일된 클래스 폴더 위치에 있지
않을 때
ApplicationContext 를 생성하기 위해 xml 로딩해야되는데 보통의 위치는 컴파일된
클래스위치를 기준으로 잡아 폴더를 설정하기 때문에 별 문제없이 작업이 가능하다.
하지만 web application 프로젝트로 xml 을 다른 위치에 두고 작업을 하고자 할때는
ClassPathXmlApplicationContext 클래스를 사용해서 ApplicationContext를 생성하기 힘들다.
xml 위치를 찾지 못하기 때문이다.
ApplicationContext 생성을 위해 xml 위치를 찾기위한 2가지 방법이 있는데 WEB-INF/classes
폴더에 xml 관련 설정파일들을 집어넣는것이다. 수동으로 복사해서 넣어도 되지만
eclipse 에서 build path 를 설정하게 되면 자동으로 복사해서 넣어준다.
프로젝트 설정정보를 열어 java build path 를 클릭한다. Source 탭으로 이동한후
Add Folder 를 클릭하여 컴파일 폴더인 classes 에 출력될수 있도록 추가한다.
추가하고자하는 폴더를 선택한다
설정된 build path 에 Edit 를 클릭하여 상세설정에서 inclusion patterns 에 포함하고자 하는
폴더와 Exclusion patterns 제외하고자 하는 폴더를 설정하여 집어넣고 끝내면
원하는 폴더나 파일만 classes 폴더에 output 으로 출력할수 있다.
WEB-INF/classes 폴더에 application xml 설정파일들이 추가된 것을 볼수있다.
두번째 방법은 소스에서 찾는 방법인데 FileSystemXmlApplicationContext 클래스를 사용해서
ApplicationContext 생성하는 것이다. Servlet 을 사용할수 있는 컨트롤 클래스일때에는
getServletContext().getRealPath(“/WEB-INF”); 사용해서 위치를 쉽게 얻을수 있겠지만
단위 테스트를 시행하는 경우에는 getResource 함수파라미터로 현재 클래스명을 넘겨
URL 클래스를 리턴받은후 getPath() 를 통해 경로를 얻으면 된다.
그런다음 절대경로를 조합해서 FileSystemXmlApplicationContext 파라미터 값으로 넘기면
ApplicationContext 를 생성할수 있다.
String path = this.getClass().getResource(“MockUserServiceTest.class”).getPath();
path = path.substring(0, path.lastIndexOf(“/classes”));
//String str = getServletContext().getRealPath(“/WEB-INF”);
ApplicationContext ctx = new
FileSystemXmlApplicationContext(path + “/config/common/applicationContext.xml”);
'자바(JAVA)' 카테고리의 다른 글
weblogic 9.2 에서 도메인(domain) 만들기 (0) | 2009.08.02 |
---|---|
java Stream 입출력 관련 정리 (0) | 2009.08.02 |
web application 에서 ftp 파일을 Client 브라우저에 전송 (0) | 2009.08.02 |
java application 에서 ApplicationContext load 하기 (0) | 2009.07.30 |
자바 디자인 패턴 2 - Adapter (0) | 2009.07.28 |
자바 디자인 패턴 1 - Iterator (0) | 2009.07.20 |
WAS 에서 web.xml 설정시 xml 태그순서 (0) | 2009.07.20 |
자바 Vector 클래스로 데이타 오름차순 정렬하기 (0) | 2009.07.20 |
녹두장군1님의
글이 좋았다면 응원을 보내주세요!