Spring 개발시 개발, 운영환경 프로퍼티 파일 관리하기

개발하면서 틈틈히 앞으로 운영될 운영환경에 배포를 하면서 확인할거 확인해야 하는 경우가 많이 있는것 같다.


하지만 개발을 하다가 운영환경에 배포를 하기 위해서는 운영환경에 맞게 이것저것 수정을 많이 해야 한다.

뭐 요런걸 방지하기 위해서 JAVA 소스에 픽스시켜 놓지 않고 변경될만한 부분을 따로 프로퍼티 파일로 빼내서 관리하는 경우가 많다.

그런데 요 프로퍼티 파일도 결국은 개발이냐 운영이냐에 따라 수정했다가~, 다시 원상복구 했다가~ 해야 한다.

뭐 대표적인 것으로는 디비접속 정보쯤 되겠다~



아무튼 Spring이 메인 프레임워크인 환경에서는 프로퍼티 파일을 아래처럼 구성하면 mode 값을 dev 나 op 로만 바꾸면 싹 적용시킬수 있다.
# mode : dev(개발), op(운영)
mode=dev

jdbc.mysql.driverClassName=com.mysql.jdbc.Driver
jdbc.mysql.xaDriver=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource
jdbc.mysql.url=${jdbc.mysql.${mode}.url}
jdbc.mysql.username=${jdbc.mysql.${mode}.username}
jdbc.mysql.password=${jdbc.mysql.${mode}.password}

jdbc.mysql.dev.url=jdbc:mysql://ip:3306/dbname?useUnicode=true&characterEncoding=utf8
jdbc.mysql.dev.username=아이디
jdbc.mysql.dev.password=비번

jdbc.mysql.op.url=jdbc:mysql://ip:3306/dbname?useUnicode=true&characterEncoding=utf8
jdbc.mysql.op.username=아이디
jdbc.mysql.op.password=비번



요렇게 설정한후 값을 가져오는 부분에서는

만약 스프링 설정 xml파일에서 값을 참조하고 싶다! 그러면
<property name="url" value="${jdbc.mysql.url}"/>
요렇게 참조하고 불러오는 값은 mode 에 설정된 값에 따라 개발모드 프로퍼티값이나 운영모드 프로퍼티 값을 읽어올 것이다.


아니면 Java 클래스에서 @Value 어노테이션을 써서 가져오고 싶다면
@Value("${jdbc.mysql.url}") String url;
요렇게 값을 가져올 수 있다.



요런 사용법을 쪼매 응용하면 다른 부분에서도 효과적으로 프로퍼티를 다룰수 있을것 같다.