개발환경에 맞는 Spring Profile 설정하기
개발을 하다 보면 데이터베이스 설정, 파일 위치설정 등 환경에 따라 설정이 다른 경우 config파일을 여러 개 사용할 때가 있다.
- local_set.config : 로컬환경
- dev_set.config : 테스트서버환경
- prod_set.config : 배포서버환경
각 파일을 생성하고 환경에 따라 다르게 읽어 들여서 각각 설정을 해줄 것이다.
이클립스에서 tomcat인 경우 설정
Servers에 뜨는 tomcat을 더블클릭하면 위와 같은 화면이 뜬다.
Open launch configuration 을 클릭한다.
-Dspring.profiles.active=local
Arguments 탭을 클릭한 후 VM arguments 부분에 환경에 맞게 추가해준다.
- 로컬환경설정인 경우 -Dspring.profiles.active=local
- 테스트서버환경인 경우 -Dspring.profiles.active=dev
- 배포서버환경인 경우 -Dspring.profiles.active=prod
tomcat인 경우 설정 ( 이클립스에서 돌리면 위에 설정만 해주면된다.)
Tomcat > bin > catalina.bat 파일에
set "JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=dev"
위 내용을 환경에 맞게 추가해준다. </b>
- 로컬환경설정인 경우 set “JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=local”
- 테스트서버환경인 경우 set “JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=dev”
- 배포서버환경인 경우 set “JAVA_OPTS=%JAVA_OPTS% -Dspring.profiles.active=prod”
xml에서의 사용
<bean id="egov.propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>/WEB-INF/config/setting/#{systemProperties['spring.profiles.active']}_set.config</value>
</list>
</property>
</bean>
#{systemProperties[‘spring.profiles.active’]}로 사용한다.
JAVA에서의 사용
String profile = System.getProperty("spring.profiles.active");
propertyFile = new File(BASE_PATH, "/WEB-INF/config/setting/"+profile+"_set.config");
System.getProperty(“spring.profiles.active”)로 불러온다