본문 바로가기
Develop/etc

.properties vs .yml

by 연로그 2022. 7. 5.
반응형

🤔 서론

 나는 설정 파일을 application.properties만 써봤다. 필요하다면 application-prod.properties나 application-dev.properties 등을 추가로 만들었을 뿐 큰 변화가 없었다. 헌데 최근 들어 설정 파일을 yml 타입으로 사용하는 사람들이 보이기 시작했다. properties랑 yml이 어떤 차이가 있을지 왜 yml을 선호하는 건지 궁금해서 찾아보게 되었다.

 

📑 .properties 예제

spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/test
spring.datasource.hikari.username=sa
spring.datasource.hikari.password=

# 리스트
my.servers[0]=dev.example.com
my.servers[1]=another.example.com

 

📑 .yml 예제

spring:
  datasource:
    url: jdbc:log4jdbc:mariadb://localhost:3306/test
    hikari:
      username: sa
      password:
      
# 리스트 1
my:
  servers: [dev.example.com, another.example.com]

# 리스트 2
my:
  servers:
    - dev.example.com
    - another.example.com

 

💥 .properties vs .yml

  .properties YAML (.yml)
명세서 존재 X.
(가장 유사한 문서로는 javadoc)
O.
(yaml 명세서)
어느 언어에서 사용되는가? 주로 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에서만 사용한다면? 반드시 yml을 사용해야한다고 고집할 필요는 없다. 회사/팀 컨벤션을 따르거나 자신이 읽기 편한 것을 선택하면 될듯!

 


출처

반응형