[SpringBoot] application.yml, application.properties 차이점 정리 및 사용예시
Spring Boot에서 application.properties와 application.yml은 모두 어플리케이션의 구성 설정을 위한 파일이며, 둘간의 주요 차이점은 파일 형식과 구문에 있습니다. 둘간의 차이점을 알아보고, 각각에서 mysql과 mongodb 세팅의 차이점을 알아보도록 하겠습니다.
파일 형식
application.properties
- 전통적인 프로퍼티 형식을 사용하며, 설정은 키 밸류 형태로, key=value 형식으로 표현됩니다.
application.yml
- YAML(Yet Another Markup Language 혹은 YAML Ain't Markup Language) 형식을 사용하며, 계층적이고 가독성이 높은 방식입니다.
구문
application.properties에서는 동일한 접두사를 가진 속성들이 반복적으로 나열이 됩니다.
app.name=my_app
app.description=application
app.version=1.0.5
예를 들어, 위와 같이 app이라고 하는 접두사를 기반으로 name, description, version이라는 속성들이 존재합니다.
application.yml에서는 계층 구조를 사용하여 속성들을 그룹화 할 수 있습니다.
app:
name: my_app
description: application
version: 1.0.5
공통적으로 들어가는 접두사 app을 하나의 키로 넣고, 다시 하위 속성들을 각각 입력합니다.
설정 예시
SQL 데이터베이스를 이용하여 MySQL에 연결하기 위한 datasource를 예시로 설명을 하겠습니다.
application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/[데이터베이스명]
spring.datasource.username=[아이디]
spring.datasource.password=[패스워드]
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/[데이터베이스명]
username: [아이디]
password: [패스워드]
driver-class-name: com.mysql.cj.jdbc.Driver
datasource의 경우 spring.datasource의 접두사를 가지기 때문에, application.yml에서는 2번의 그룹을 하게 됩니다.
properties와 yml은 취향차이라 볼 수 있지만, 복잡하게 설정이 필요한 대규모 어플리케이션 개발의 경우, 가독성과 구조화가 가능하고, 유지 보수성이 좋은 yml의 손을 들어줄 수밖에 없기 때문에 되도록이면 yml로 개발을 하는 것을 권장하게 됩니다.