Spring Boot 설정 파일 yml vs properties

Spring Boot yml vs properties 선택 고민 끝

Spring Boot 프로젝트를 처음 생성하면 application.properties 파일이 자동으로 생성됩니다. 하지만 실무에서 본 대부분의 프로젝트들은 application.properties 대신 application.yml을 사용했습니다. 이미 세팅된 프로젝트라면 그냥 있는 데로 하면 되지만 내가 세팅해야 될 경우에는 어떤 걸 선택해야 할까요?

Spring Boot 설정 파일 yml vs properties

Spring Initializr에서 properties를 기본으로 하는 이유는?

  • properties 확장자는 예전부터 Java 개발에 많이 사용되던 파일 형식입니다.
  • 대부분의 개발 도구와 IDE에서 문법 하이라이팅, 자동 완성, 오류 검사 등이 안정적으로 지원됩니다.
  • properties가 yml에 비해서는 시작하기 쉽고, 문법 오류 발생 가능성도 적습니다.

yml vs properties 무엇이 다를까?

# application.properties

spring.application.name=demo
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/testdb
spring.datasource.username=test
spring.datasource.password=1234
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.mail.host=smtp.example.com
spring.recipients[0]=admin@example.com
spring.recipients[1]=support@example.com
# application.yml

spring:
  application:
    name: demo
  datasource:
    url: jdbc:mysql://localhost:3306/testdb
    username: test
    password: 1234
    driver-class-name: com.mysql.cj.jdbc.Driver
  mail:
    host: smtp.example.com
    recipients:
      - admin@example.com
      - support@example.com
server:
  port: 8080

위가 properties고, 아래가 yml입니다. properties는 전체 속성을 1줄마다 다 넣고 있고, yml은 트리같이 계층형으로 넣고 있습니다.

왜 yml이 properties 보다 더 선호 될까?

  • 동일한 종류의 속성들끼리 한곳으로 모여서 보기 좋다.
  • 복잡한 데이터 구조를 더 보기 좋게 표현할 수 있다. 위 예제를 보면 리스트 형을 표현할 경우 yml은 -만 붙여주면 되지만 properties는 [0], [1] 이런 식으로 java의 배열같이 표시해야 한다.
  • 멀티라인 문자열 표현이 가능하다. (properties는 불가능)
  • 단일 파일 내에서 여러 프로파일을 분리할 수 있다. (이 기능은 속성이 정말 적은 경우를 제외하면 쓰지 않는 것이 좋아 보입니다. 실무에서도 본 적 없어요.)

yml에서 properties로 properties에서 yml로 변환 방법은?

ChatGPT나 Gemini한테 변환해달라고 하면 한방에 잘 해줍니다. 가끔 properties -> yml로 변환할 때 묶여 있어야 할 것들이 여러 줄로 나눠지게 해줄 때가 있는데 그럴 때는 IntelliJ에서 빨갛게 줄그어서 경고해 주고, 그 부분 클릭하면 알아서 merge 해줍니다.

Spring Boot yml vs properties 결론은?

저라면 그냥 대세에 따라서 yml로 할 것 같습니다. 많은 개발자들이 yml을 선호하는 것 같고, yml에 비해 properties가 뛰어난 것이 쉽다는 것 외에는 그다지 없는 것 같습니다. 그리고 나중에 예상치 못한 이유로 properties로 바꿔야 한다고 해도 손쉽게 바꿀 수 있습니다.

일단 아무거나 마음에 드는 걸로 하고, 나중에 문제가 생기면 바꾸면 됩니다. 잘못된 부분이나 여러분의 다른 의견이 있으면 댓글로 남겨주세요.

참고 사이트

https://www.baeldung.com/spring-boot-yaml-vs-properties

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다