본문 바로가기
스터디/Spring

[Spring] properties와 yml 중 어떤걸 사용할까?

by zoodi 2023. 9. 4.
728x90

Springboot에서 일반적으로 프로젝트의 설정을 application.properties 또는 application.yml 파일을 통해 설정합니다. 기본적으로 Spring Initializer을 통해 springboot 프로젝트를 생성하면 application.properties 가 생성되지만, application.yml 파일을 사용할 수도 있습니다.

properties

properties 파일은 key=value 형태로 이루어져있습니다.

 

  • 예시코드
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:8080/test
spring.datasource.username=
spring.datasource.password=

yml

yml의 경우엔 들여쓰기로 구분되는 계층 구조 및 key: value 형태로 이루어져있습니다.

yml에서는 공통되는 구조는 상위에 한 번만 작성하고 하위에 공통되는 구조가 작성되는 구조입니다.

properties와 비교했을 때 중복되는 코드를 줄일 수 있습니다.

 

  • 예시코드
spring:
  datasource:
    url: jdbc:log4jdbc:mariadb://localhost:3306/test
    hikari:
      username: 
      password:

properties vs yml

 

  properties yml
명세서 존재 x o
어느 언어에서 사용하는지 주로 java python, ruby, java 등
계층구조 비계층적 계층적
Spring @PropertySource지원 o x
profile 여러개 사용 spring boot 2.4부터 구분 가능 한 파일에서 구분 가능

(Spring에서 YAML에 대해 @PropertySource를 직접 지원하지 않더라도 직접 PropertySourceFactory를 구현하는 방법도 있습니다. 👉 https://www.baeldung.com/spring-yaml-propertysource )

 

어떤 것을 사용해야할까?

  • yml 파일이 다양한 타입을 지원해주고 계층 구조를 지원해준다는 장점이있습니다.
  • Spring을 사용한다면 YAML이 제공하는 기능들을 효과적으로 처리해줍니다.
  • 여러 애플리케이션에서 읽어야하는 파일이라면 yml이 유리합니다.
  • Spring에서만 사용한다면 팀 컨벤셔능ㄹ 따르거나 자신이 읽기 편한것을 사용하면됩니다.

정리

  • properties와 yml을 함께 사용하면 properties 파일의 우선순위가 높아 yml 파일에서 설정한 내용이 덮어씌워질 수 있습니다.
  • 따라서 되도록이면 한 쪽만 사용하는 것을 권장합니다.

출처

https://yeonyeon.tistory.com/245

https://st-lab.tistory.com/243

728x90

댓글