Programming/JAVA2014. 6. 25. 14:27

개발후 배포시 war로 압축해서 배포하는 그때


서버환경(개발/운영)에 따라서 DB접근 정보나 기타 cfg 설정이 다른 경우가 있다


그런 경우 PropertyPlaceholderConfigurer등 설정 정보를 다르게 보게 해야되는 데


구글링 해보니까 아래 Stackoverflow 몇가지를 제시하고있다. 


http://stackoverflow.com/questions/11735526/spring-loading-application-properties-based-on-tomcat-servlet-contect-definition


그중에 괜찮다고 생각되는 두가지 방안


1. 아래 방법처림 배포될 서버에 예상해서 설정해서 여러개로 구성하는 방법

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>classpath:your-production-config.properties</value>
            <value>file:C:/Users/${user.name}/test-application.properties</value>
        </list>
    </property>
    <property name="ignoreUnresolvablePlaceholders" value="true"/>
    <property name="ignoreResourceNotFound" value="true"/>
    <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>        
</bean>


2. ${catalina.home} 변수 이용한 Tomcat 디렉토리의 conf에 설정을 따로 구성해두는 방안

<context:property-placeholder location="file:${catalina.home}/conf/myFirst.properties" ignore-unresolvable="true" />
<context:property-placeholder   location="classpath:second.properties"  ignore-unresolvable="true"  />
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
    <value>file:${catalina.home}/conf/dbpool.properties</value>
</property>
</bean>


개발환경에서 한개 서버에 버젼에 따라서 여러 톰캣을 띄워야 할 경우에는 2번 방법이 괜찮은 것 같다.

Posted by 시니^^