스프링 부트(핵심 원리와 활용)

Ch06. 외부설정과 프로필(2) - YAML

webmaster 2023. 3. 18. 17:24
728x90

스프링은 설정 데이터를 사용할 때 application.properties 뿐만 아니라 application.yml이라는 형식도 지원한다.

YAML

YAML(YAML Ain't Markup Language)은 사람이 읽기 좋은 데이터 구조를 목표로 한다.
확장자는 yaml , yml 이다. 주로 yml을 사용한다.

application.yml

my:
  datasource:
    url: local.db.com
    username: username
    password: password
    etc:
      max-connection: 1
      timeout: 3500ms
      options: CACHE,ADMIN
  • YAML의 가장 큰 특징은 사람이 읽기 좋게 계층 구조를 이룬다는 점이다.
  • YAML은 space (공백)로 계층 구조를 만든다. space 는 1칸을 사용해도 되는데, 보통 2칸을 사용한다. 일관성있게 사용하지 않으면 읽기 어렵거나 구조가 깨질 수 있다.
  • 구분기호로 :를 사용한다. 만약 값이 있다면 이렇게 key:value : 이후에 공백을 하나 넣고 값을 넣어주면 된다.
  • 스프링은 YAML의 계층 구조를 properties 처럼 평평하게 만들어서 읽어들인다.
    • 이전에 작성한 application.properties 처럼 읽어들인다

주의

  • application.properties , application.yml 을 같이 사용하면 application.properties 가 우선권을 가진다.
    • 이것을 둘이 함께 사용하는 것은 일관성이 없으므로 권장하지 않는다.
    • 참고로 실무에서는 설정 정보가 많아서 보기 편한 yml 을 선호한다.

 

YML과 프로필

YML에도 프로필을 적용할 수 있다.

application.yml

my:
  datasource:
    url: local.db.com
    username: username
    password: password
    etc:
      max-connection: 1
      timeout: 3500ms
      options: CACHE,ADMIN
---
spring:
  config:
    activate:
      on-profile: dev
my:
  datasource:
    url: dev.db.com
    username: dev_user
    password: dev_pw
    etc:
      max-connection: 10
      timeout: 60s
      options: DEV,ADMIN
---
spring:
  config:
    activate:
      on-profile: prod
my:
  datasource:
    url: prod.db.com
    username: prod_user
    password: prod_pw
    etc:
      max-connection: 20
      timeout: 10s
      options: PROD,ADMIN
  • yml 은 --- dash( - ) 3개를 사용해서 논리 파일을 구분한다.
  • spring.config.active.on-profile을 사용해서 프로필을 적용할 수 있다.
  • 나머지는 application.properties 와 동일하다.
 

실행하기

728x90