Spring Boot 프로젝트에서 각종 설정들을 할때는 application.properties 혹은 application.yml 파일에 작성하여 환경설정을 한다. 오늘은 둘의 차이점과 나는 어떤걸 사용할지 정리해볼려고 한다
둘의 가장 대표적인 차이점이라고 한다면 내부 구조이다. properties의 경우엔 각 줄마다 key=value의 형태로 이루어져 있지만 yml의 경우엔 들여쓰기로 구분되는 계층 구조와 key:value의 형태가 그 차이이다. 이해를 위한 간략한 mySql 설정 예시를 살펴보자
properties설정
spring.datasource.url=jdbc:mysql://localhost:3306/스키마명?useSSL=false&characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=아이디
spring.datasource.password=비밀번호
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:{포트번호}/{데이터베이스 이름}?useSSL=false&serverTimezone=Asia/Seoul&characterEncoding=UTF-8
username: root
password: {root password}
같은 설정을 하고 있지만 properties에 일일이 나열했던 구조를 yml에서 상위에서 한 번만 작성하고 하위에 공통되는 구조에 값을 설정하는 형식이다.
주의해야 할 점으로는 properties와 yml파일 모두 존재할 경우 properties의 우선순위가 높아 properties 파일이 yml 파일에서 설정한 내용을 덮어버릴 수 있다 때문에 둘다 사용하는 것 보단 하나만 채택하는 것이 권장된다고 한다.
개인적인 의견으로는 yml의 구조가 더 파악하기 쉽고 중복되는 코드도 줄일 수 있기 때문에 yml을 채택하고자 한다.