springboot profile 사용법

leeminsu·2022년 2월 1일
0
post-thumbnail
서비스를 운영하다보면 운영과 개발 혹은 로컬까지 세팅을 다르게 해야하는 경우가 생깁니다. 대표적으로는 운영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별 application-{profile}.properties 작성 (ex : application-dev.properties)
spring.profiles.active property를 통해 default active profile을 설정 할 수 있음.
dev를 default active profile로 설정
application.properties -> spring.profiles.active=dev

sts(이클립스) 세팅방법

WAS 구동방법

다음 방법 중 택1
1. web.xml - active-profile 설정
<context-param>
<param-name>spring.profiles.active</param-name>
<param-value>prod</param-value>
</context-param>
2. catalina.sh 설정
JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=prod"
3. catalina.properties 에 추가 (D 빼는 것 주의)
spring.profiles.active=dev

profiles 설명

properties 로딩 순서는 application.properties -> activated 된 application-profile.properties 순으로 로딩
동일한 name의 property는 override됨. (application.properties 설정 후 activated된 profile에 해당 property가 있으면 activated된 profile의 property 값이됨)
profiles별 .properties 파일의 경로는 application.properties와 동일한 위치

profile
프로게이머 아니고 프로그래머

0개의 댓글