최근에 스프링부트 강의를 보는데 이전 버전 Spring Boot에서는 application.yml이 자동 생성되고 특정 버전이후부터는 application.properties 파일이 자동 생성되는 것을 확인할 수 있었다. 이 두가지 파일은 작성하는 설정의 의미는 동일하나 작성 표기법이 살짝다르다. 그리고 서로 변환이 가능해서  properties로 작성하고 싶으면 그 방식대로 작성하고 yml파일 형식으로 작성하고 싶으면 그 방식대로 작성하면 된다. 뭐가 더 편하고 좋다라는 것은 사용하는 사람들 마다 다르다. 개인적으로는 가독성은 properties 파일, 작성의 편의성은 yml파일이 좋다고 생각된다. .properties 파일은 작성법이 직관적이나 yml 파일은 초심자가 이해하는데 약간의 사전지식이 필요하다. 그리고 현재 인프런이나 패스트캠퍼스에 올라온 강의들은 yml형식으로 강의한 것들이 많으므로 이것에 대한 지식은 나름 필요하다고 생각된다. 그래서 이번 포스트에서는 application.properties파일과 application.yml파일의 차이를 알아보고 yml파일 작성법에 대해서 소개하려고 한다.

 

  • 필자는 다음과 같은 프로젝트를 생성하였고 스프링부트 버전은 2.7.13이다. 

프로젝트 생성

  • 해당 버전의 스프링부트 프로젝트에서는 application.properties가 자동생성된다. 이것을 yml 파일로 바꾸고 싶다면 파일의 확장자명만 yml으로 바꾸면 된다. 이 application.properties 파일은 별다른 설정이 없다라도 기본으로 인식이 되지만 새로 생성하는 또다른 설정 파일을 인식하기 위해선 추가로 지정해주는 과정이 필요하다. 

properties 파일 vs yml 파일  

위의 파일은 properties 형식으로 작성한 파일이고 아래 그림은 yml 형식으로 작성한 파일이다. properties 형식은 key, value 형식으로 작성되어 사이사이에 dot(.)을 넣어서 key이름을 작성한다. 사실 이것이 계층구조인데 이러한 계층구조를 properties파일 형식에선 각 계층을 모두 적어준다. 

properties

위에서 dot(.)으로 구분한 key이름은 yml 파일에선 좀 더 심플해진 계층구조로 표현이 되어 상위계층명을 생략하여 다음 라인에 입력한다. 그리고 라인마다 중간 중간에 공백이 있다. 이건 계층의 depth를 포현하며 이때 공백 한칸은 tab을 입력하기 보다는 space 두번을 쳐서 입력하는 것이 좋다. 그리고 key옆의 클론(:)과 value 사이에는 한 칸의 space 있어야 한다. 

yml

그 다음으로는 리스트를 작성할 때의 차이이다. yml 형식의 특징은 반복의 최소화이다. yml 파일의 리스트 표기는 - 로 표기를 한다. 같은 index 표기시엔 다음 라인엔 -를 쓰지 않는다. 반면에 properties 형식에서는 기존 리스트 표기형식과 동일하다. 

리스트 표현형식 : properties           >           yml

주석

  • 주석은 yml 파일, properties 파일 모두 #으로 동일하다.

직접 작성시

  • properties
    • 최대한 인텔리센스에서 제공하는 자동완성으로 작성하는 것이 좋다. 오타를 내는 것을 조심하자.

자동완성

  • yml
    • yml 파일 자동완성은 매우 편하다. 한방에 계층 구조를 만들어준다. 그리고 한라인 한라인 엔터치고 작성하면 작성 속도도 yml 파일이 월등히 빠르다고 생각한다.

자동완성 편해

yml 파일 형식 체크 사이트

 본인이 yml 파일을 잘 작성했는지 확인하려면 다음의 사이트를 확인하면 된다. 

https://jsonformatter.org/yaml-viewer

 

Best YAML Viewer Online

Free YAML Viewer is a web based viewer for YAML

jsonformatter.org

이미 작성된 yml 또는 properties 파일 변환 시 

 직접 수작업으로 변환할 수 있지만 물론 자동으로 변환시켜주는 사이트가 있다. 굉장히 유용하다.

 

+ Recent posts