springfoot profileの使用


서비스를 운영하다보면 운영과 개발 혹은 로컬까지 세팅을 다르게 해야하는 경우가 생깁니다. 대표적으로는 운영DB와 개발DB, 또는 런타임 환경별로 달라지는 설정값 등
런타임 환경별로 작업을 하게되는데 기존 제가 있던 프로젝트의 경우에는 하나의 application.properties를 사용하며 버전컨트롤 상에는 개발서버의 application.properties가 작성되어있으며
운영상의 properties는 서버에 직접 접속해서 properties를 변경하는 방식으로 구성되어있었습니다.
그에따라서 배포요청을 했을경우 배포자가 properties 수정의 누락으로인해서 에러가 발생하는 경우가 생겼으며 또한 새로운 개발자가 왔을경우
프로젝트만 봐서는 운영상의 properties를 확인할 수 없어서 해당 파일을 찾아헤메는 상황이 발생하게 됩니다.

Maven 등을 통해서도 properties를 설정할 수 있지만 조금 더 명시적으로 런타임 환경을 구분할 수 있는 springboot profiles를 소개해보려고 합니다.

SpringBoot에서는 런타임 환경을 구분할 수 있는 Profiles를 제공합니다. 또한 Activated된 profile에 따라 자동적으로 properties 파일을 읽어드려 소스상으로 명시적으로 구분된 properties를 사용함으로써 위의 상황과 같은 문제를 방지합니다.
기본적으로 default로는 application.properties가 로딩되며 그다음 activated된 application-profile.properties를 로딩하게 됩니다.
같은 name의 property의 경우에는 최종 activated된 properties에 명시된 값으로 override 됩니다.
또한 profiles별 properties는 application.properties와 같은 경로에 위치하므로 소스상으로 한눈에 구분된 런타임 환경을 확인할 수 있습니다.
設定方法
Profiles固有のアプリケーション-{プロファイル}です.属性の作成(ex:アプリケーション-dev.properties)
spring.profiles.Active propertyでデフォルトのactive profileを設定できます.
devをデフォルトのアクティブプロファイルに設定する
application.properties -> spring.profiles.active=dev
sts(eclipse)の設定方法


WAS駆動方法
次のいずれかの方法を選択します.
1. web.xml-active-profile設定

spring.profiles.active
prod

2. catalina.shの設定
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=prod"
3. catalina.propertiesに追加(注意D減算)
spring.profiles.active=dev
プロファイルの説明
プロパティのロード順序はアプリケーションです.properties->アクティブなアプリケーション-profile.属性によるロード
同じ名前のプロパティが上書きされます.(アプリケーション.propertiesを設定すると、アクティブなプロファイルにそのプロパティがある場合、そのプロパティはアクティブなプロファイルのプロパティ値になります)
プロファイルを押します.propertiesファイルのパスはアプリケーションです.propertiesと同じ位置