IT/Java
Spring - iBATIS : 웹서버 시작시 jdbc.properties 를 읽지 못해도 무시하게 하자
yjacket
2010. 7. 14. 20:08
웹서버를 포함한 솔루션 배포시에는 데이터베이스 연결 설정 파일을 포함시키기 어렵다. 사용자의 DB접속 환경이 어떨지 알 수 없기 때문이다. 그렇다고 서버 셋업시에 사람이 일일이 설정파일을 만지는게 하는것도 불안하다.
보통은 어플리케이션 설치시에 정보를 입력받아 속성파일로 써주거나, 웹사이트가 구동되고 나서 DB설정을 먼저 하도록 한다. 그런데 문제는 Spring 이 dataSource 객체를 생성하는 방식이다.
applicationContext.xml
1: <bean id="propertyConfigurer"
2: class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
3: <property name="locations" value="WEB-INF/jdbc.properties" />
4: </bean>
5:
6: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
7: <property name="driverClassName" value="${jdbc.driverClassName}" />
8: <property name="url" value="${jdbc.url}" />
9: <property name="username" value="${jdbc.username}" />
10: <property name="password" value="${jdbc.password}" />
11: </bean>
Spring 은 이처럼 applicationContext.xml 파일로 properties 파일의 위치를 정의하고 dataSource bean에서 이를 참조하도록 해서 웹서버 시작시에 로딩한다. 그런데 만일 웹서버 시작시에 이 파일이 없거나 속성을 읽어오지 못했다면 서버가 시작조차 되지 않는다.
데이터베이스 연결 속성 파일이 없거나 올바르지 않아도 웹서버가 정상적으로 시작되게 하기 위해서는 PropertyPlaceholderConfigurer 클래스의 ignoreUnresolvablePlaceholders 속성을 true 로 만들어주면 되는데, 이렇게 설정하기 위해서 위 코드의 location 속성 정의 아래 다음 내용을 추가 한다.
1: <property name="ignoreUnresolvablePlaceholders" value="true" />