스프링 부트, 환경에 따라 다른 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 명을 입력 후 실행한다.

1

위와 같이 설정하고 애플리케이션을 실행하면 아래와 같은 로그를 확인할 수 있다. local과 common이 active 된 것을 보아 잘 실행된 것을 알 수 있다.

com.pinterest.PinterestApplication       : The following 2 profiles are active: "local", "common"

java -jar 옵션으로 실행

java -jar myapp.jar --spring.profiles.active=local