스프링 부트, 환경에 따라 다른 Profiles 설정하기
작성일
실무에서 개발을 진행하고 운영을 할 때 로컬(local), 개발(dev), 테스트(test), 상용(prod) 등 환경에 따라 서버나 설정 값들을 변경해야 한다. 스프링부트는 Profiles
을 통해 이러한 설정을 간단하게 할 수 있다.
개발환경에 따라 설정 파일을 설정하는 방법에 대해 알아보자.
application.yml 설정 파일 작성
설정 정보는 application.properties 또는 application.yml을 통해 설정 값을 셋팅한다. 여기서 특정 규칙에 만족하게 설정 파일을 만들면 스프링부트가 읽어올 수 있다.
해당 포스트는 yml을 기준으로 작성했고 로컬 환경(local)과 운영 환경(prod)에 대한 Profiles를 작성했다.
application.yml
spring:
profiles:
active:
- local
group:
local:
- common
prod:
- common
---
spring:
config:
active:
on-profile: local
datasource:
url:
username:
password:
driver-class-name:
---
spring:
config:
activate:
on-profile: prod
datasource:
url:
username:
password:
driver-class-name:
---
spring:
config:
activate:
on-profile: common
jpa:
hibernate:
ddl-auto: update
open-in-view: false
show-sql: true
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 100
위 설정 파일을 자세히 살펴보자.
spring:
profiles:
active:
- local
group:
local:
- common
prod:
- common
- spring.profiles.active: 기본적으로 활성화할 profile을 local로 설정한다.
- spring.profiles.group: profile을 그룹지어 함께 어플리케이션을 구동한다. 로컬 환경에서는 local과 common이 함께 실행되고 운영 환경에서는 prod와 common 이 함께 실행 된다.
---
spring:
config:
active:
on-profile: local
datasource:
url:
username:
password:
driver-class-name:
- —: 논리 파일을 구분한다.
- spring.config.active.on-profile: 프로필을 적용할 수 있다. application-local.yml과 동일한 역할을 한다.
- 로컬 환경(local)에서 사용하고자 하는 데이터베이스 설정 정보를 입력하면 된다.
---
spring:
config:
activate:
on-profile: prod
datasource:
url:
username:
password:
driver-class-name:
- spring.config.active.on-profile: 프로필을 적용할 수 있다. application-local.yml과 동일한 역할을 한다.
- 운영 환경(prod)에서 사용하고자 하는 데이터베이스 설정 정보를 입력하면 된다.
---
spring:
config:
activate:
on-profile: common
jpa:
hibernate:
ddl-auto: update
open-in-view: false
show-sql: true
properties:
hibernate:
format_sql: true
default_batch_fetch_size: 100
- 공통 정보에 대한 프로필을 작성한 것이다. spring.profiles.group을 통해 local, prod에서 같이 사용된다.
Profile 값 설정하여 애플리케이션 실행하기
Intellij IDE로 실행
Intellij IDE > Edit Configuration > Active profiles에 원하는 profile 명을 입력 후 실행한다.
위와 같이 설정하고 애플리케이션을 실행하면 아래와 같은 로그를 확인할 수 있다. local과 common이 active 된 것을 보아 잘 실행된 것을 알 수 있다.
com.pinterest.PinterestApplication : The following 2 profiles are active: "local", "common"
java -jar 옵션으로 실행
java -jar myapp.jar --spring.profiles.active=local