기록하는 개발자

여러가지 환경에 유동적인 settings.profile 설정 본문

웹 개발/Spring

여러가지 환경에 유동적인 settings.profile 설정

gitseok 2022. 3. 15. 18:08

 

 

 - 여러가지 환경에서 개발 및 유지보수를 해야할때 settings.profile 값에 따른 여러 환경을 설정할 수 있다.

   서버별 다른 DB를 사용한다는 가정하에 예시 코드를 작성

 

 - global.properties

##여러가지 셋팅을 지정하고 값에 따라 유동적으로 변환 가능
settings.profile=local

## 공통 설정
DB.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

##운영 서버 설정
operation.DB.url.ip=[ip주소]
operation.DB.username=[username]
operation.DB.password=[password]

##로컬 서버 설정
local.DB.url.ip=[ip주소]
local.DB.username=[username]
local.DB.password=[password]

##테스트 서버 설정
test.DB.url.ip=[ip주소]
test.DB.username=[username]
test.DB.password=[password]

운영서버, 로컬서버, 테스트 서버가 존재한다는 가정하에 각각 사용되는 디비의 설정을 작성

공통으로 적용되는 부분의 경우는 한가지만 생성하여 사용할 수 있다.

settings.profile에 기입하는 정보에 따라 각기 다른 설정을 적용할 수 있다.

 

 - context-datasource.xml

<!-- context-datasource.xml -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="${DB.driverClassName}" />
        <property name="url" value="${${settings.profile}.DB.url.ip}" />
        <property name="username" value="${${settings.profile}.DB.username}" />
        <property name="password" value="${${settings.profile}.DB.password}" />
        <property name="maxActive" value="10" />
        <property name="maxIdle" value="10" />
        <property name="maxWait" value="10" />
    </bean>

"driverClassName" 같은 경우는 공통으로 사용하기 때문에 value에 ${DB.driverClassName} 를 기입하여 사용한다.

이외의 각각 상황별 다른 정보가 들어가는 부분은 ${${settings.profile}.DB.url.ip} 형태로 작성하는데

settings.profile 에 "local​"를 기입했다면${local.DB.url.ip}의 정보를 가져온다.

 

 

 

개인적으로 정리한 내용을 간단하게 풀어 작성했습니다.
이해가 안가는 부분은 댓글 남겨주시면 설명해드리겠습니다.

 

Comments