Spring

Spring Boot profile 환경별 설정하기(YAML)

Night-Owl 2021. 5. 15. 18:23
반응형

Spring Boot에서 로컬, 개발, 실서비스 같은 여러 환경을 하나의 application.yml 파일에 설정하고 사용하는 방법에 대해서 알아보자.

 

YAML 설정

하나의 application.yml 파일에 여러 환경의 설정 정보를 저장하려면 spring.profiles 를 통해 설정하면 된다.

---로 구분 한다.

# local, dev, prod 공통 설정
server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

---

spring:
  profiles: local
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"

---

spring:
  profiles: dev
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"


---
spring:
  profiles: prod
  datasource:
    url: "jdbc:mysql://service-server/web"
    username: "proddbuser"
    password: "proddbpass"

 

 

 

 

만약 Spring Boot 2.4 를 이용한다면 아래같은 방법도 고려해보자.

spring.profiles 가 deprecated 되었다.

spring.profiles.group.<source> 를 이용해서 여러 프로파일들을 한꺼번에 그룹지어 하나의 프로파일로 만들수 있다.

spring:
  profiles:
    group:
      "local": "testdb,common"
      "dev":  "testdb,common"
      "prod": "proddb,common"


---

spring:
  config:
    activate:
      on-profile: "proddb"
  datasource:
    url: "jdbc:mysql://service-server/web"
    username: "proddbuser"
    password: "proddbpass"

---


spring:
  config:
    activate:
      on-profile: "testdb"
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"
 
---

spring:
  config:
    activate:
      on-profile: "common"

server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

위에서도 설명했듯이  spring.profiles.group.<source>을 사용하면 관련 프로파일 그룹에 대한 논리적 이름을 정의할 수 있습니다.

위 예제는 proddbcommon 프로파일로 구성된  prod 프로파일 그룹 생성하였다.

spring.profiles.active=prod 로 실행하게 되면 proddbcommon 두개의 프로파일들을 한번에 실행할 수 있다.

 

 

 

 

 

사용

사용하는 방법은 profile 를 선택해서 실행하면 된다.

Jar

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

 

인텔리J 

1. Run > Edit Configurations... 선택 

2. Spring Boot Application 선택

3. Active profiles 에서 원하는 profile 명을 입력 후 실행

 

참고

 

 

반응형