Spring

[Spring] Spring Boot application.yml 환경별 프로필 설정 방법 (SpringBoot 2.4 기준 비교)

BE_성하 2022. 8. 28. 12:36
반응형

Spring Boot 2.4를 기준으로 환경별 프로필 설정하는 방법이 바뀌었다.

 

Spring Boot 2.4 이전

spring:
  profiles: dev #활성 프로필 설정
  profiles.include:
    - devdb # 추가할 프로필 설정
  
---
spring:
  profiles: local
  
---
spring:
  profiles: dev
  
---
spring:
  profiles: common
  
---

spring:
  profiles: prod

👉 구분자 '---'를 사용해서 여러 프로필을 나누고, 각 파일마다 spring.profiles로 프로필을 설정한다.

application.yml에서 spring.profiles로 활성 프로필을 설정하고,

추가할 프로필이 있다면 spring.profiles.include로 포함하여 활성했다.


YAML에서의 구분자 '---' 사용

공통적으로 application.yml에서는 구분자 '---'를 사용하여 설정 파일 여러개를

하나의 파일에서 사용할 수 있다.

 

👉 위의 예시를 구분자 '---' 없이 사용하려면 설정 파일을

application-local.yml

application-dev.yml

application-common.yml

application-prod.yml

이렇게 나눈 후에, application.yml에 다음과 같이 설정하면 된다.

(dev와 common프로필을 사용하고 싶을 때 -> include) 

spring:
  profiles: dev
  profiles.include:
    - common

하지만, 이러한 경우에 설정 파일이 총 4개가 더 늘어나서 더 복잡해진다.

따라서 구분자 '---'를 사용하여 프로필을 application.yml에서 나눠서 직접 사용한다.


Spring Boot 2.4 이후

spring:
  profiles:
    group:
      "local": "local, common"
      "dev": "dev, common"
      "prod": "prod, common" 
    active: dev #활성 프로필 설정
    
---
spring:
  config:
    activate:
      on-profile: "local"

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

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

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

👉 구분자 '---'를 사용해서 여러 프로필을 나누고,

각 파일마다 spring.config.activate.on-profile로 프로필을 설정한다.

application.yml에서 spring.profiles.group을 사용해서 프로필 그룹을 먼저 생성한 후에,

spring.profiles.active로 생성한 그룹 프로필을 활성화한다.

 

💡 하나의 프로필에 include로 추가하는 것이 아닌, 그룹 프로필을 만들어서 그룹 프로필을 활성화하는 방식

💡 프로필 생성 : spring.profiles -> spring.config.activate.on-profile

 

 

반응형