IT/Java

YAML/YML

sgoho01 2021. 7. 16. 20:00

Spring에서 외부설정값들을 관리할때 보통 properties 파일을 많이 사용합니다.

SpringBoot 에서는 properties말고도 yml 파일을 기본으로 사용할 수도 있습니다.

 

properties대신 yml을 사용하여 설정값들을 관리하면

보다 좋은 가독성으로 관리하기가 편리하고 중복으로 값을 입력할 수 있는

properties와 달리 중복도 방지할 수 있습니다.

 

 

properties

ghsong.name.first:gunho
ghsong.name.last:song
ghsong.phone[0]:01011112222
ghsong.phone[1]:01033334444

 

yml

ghsong:
  name:
    first: gunho
    last: song
  phone:
    - 01011112222
    - 01033334444

yml는 계층형 구조로 properties보다 가독성이 높습니다.

※ 다만 계층구조를 구분할때 indent가 틀리면 설정이 적용안될경우가 많습니다.

한 계층을 구분할때에 space 2번 or 4번으로 구분하여 작성합니다.

 

 

구조화

개발시 local, dev, prod로 구분하여 설정값이 달리지는데

yml은 spring profile에 따라 파일 한개에서도 여러 설정을 지정하여 편리하게 사용할 수 있습니다.

 


* springboot 2.4 이상에서 테스트하였으며, 이전 버전에서 사용했던

spring.profile.active가 Deprecated 되어 spring.config.activate.on-profile로 변경하여 작성하였습니다.

 

spring:
  config:
    activate:
      on-profile: local
ghsong:
  name: 'gunho-local'
  age: 10

---
spring:
  config:
    activate:
      on-profile: dev
ghsong:
  name: 'gunho-dev'
  age: 12

---
spring:
  config:
    activate:
      on-profile: prod
ghsong:
  name: 'gunho-prod'
  age: 13

--- 로 active profile을 구분하여 작성할 수 있습니다.

profile을 dev로 개발 할때 필요한 설정값들을 dev아래 구조에서 설정하면 해당 설정값으로 적용되어 사용할 수 있습니다.

 

 

 

개발환경, 운영환경에서 사용 할 설정값들을 나누어 작성 후 관리&개발할 수 있습니다.

 

 

추가로 설정파일을 여러개로 나누어서도 관리할 수 있습니다.

application-name.yml으로 파일을 구분하여 작성하고 각 profile에서 사용할 파일들을 정의해 놓고 사용할 수 있습니다.