Spring Boot : Difference between yml vs properties file
Medium
스프링 부트에서는 YAML 또는 properties를 사용해 설정을 구성할 수 있습니다. 두 형식 모두 응용 프로그램을 구성하는 key-value 쌍을 정의하는 데 사용됩니다. 다음은 YAML과 properties 파일의 주요 차이점입니다.
1️⃣ 문법
Properties Files: 간단한 'key-value' 구문을 사용합니다. 각 속성은 새 줄에 정의되며, '#'을 사용하여 주석을 추가할 수 있습니다.
```
server.port=8080
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
```
YAML File: YAML은 보다 사람이 읽기 쉬운 형식을 사용합니다. 계층 구조를 나타내기 위해 들여쓰기를 사용하고 키와 값을 구분하기 위해 콜론을 사용합니다.
```
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb
```
2️⃣ 계층
Properties File: 무 계층이며 계층 구조를 지원하지 않습니다. 계층 구조를 사용하려면 접두사를 이용해야 합니다.
YAML File: YAML 파일은 기본적으로 계층 구조를 지원하므로 중첩 속성으로 복잡한 구성을 더 쉽게 표현할 수 있습니다.
3️⃣ 배열과 리스트
Properties File: 배열이나 리스트를 기본적으로 지원하지 않으므로 쉼표로 구분된 값을 사용하거나 공통 접두사로 여러 속성을 만드는 경우가 많습니다.
```
mylist=apple,banana,orange
```
YAML File: YAML은 리스트와 배열을 기본적으로 지원합니다.
```
mylist:
- apple
- banana
- orange
```
4️⃣ 복잡한 데이터 타입
Properties File: 단순한 문자열 값으로 제한됩니다. 프로그램상에서 수동으로 변환해야 합니다.
YAML File: 수동 변환 없이 정수, 부울 등 다양한 데이터 형식을 지원합니다.
5️⃣ 가독성
Properties File: 더 압축적이지만 복잡한 구성의 경우 읽기 어려워질 수 있습니다.
YAML File: 들여쓰기 기반 구조는 중첩된 속성이 많은 경우 더 쉽게 읽을 수 있도록 해줍니다.
6️⃣ 사용 사례
Properties File은 더욱 간단한 구성을 사용하는 기존 시스템과의 호환성 문제에 적합합니다.
YAML File은 계층적이고 구조화된 형식을 사용하는 복잡한 구성을 다룰 때 선호됩니다.
요약하자면, YAML과 properties 간의 선택은 개인 선호도와 구성의 복잡성에 따라 달라집니다. YAML은 가독성이 뛰어나고 계층적이고 구조적인 구성을 지원하기 때문에 중첩된 속성이 많은 프로그램에 적합합니다.
properties는 여전히 단순한 구성이나 속성 형식을 사용하는 레거시 시스템과의 호환성을 유지하려는 경우에 적합합니다.
스프링 부트는 두 형식 모두를 지원하므로 필요에 따라 적합한 형식을 선택하면 되겠습니다.
다음 내용이 궁금하다면?
이미 회원이신가요?
2023년 11월 13일 오후 12:46
첨언하자면 properties파일은 ISO8859-1인코딩을 사용해서 한글이 정상적으로 표시되지않는다는 단점도 있습니다. 다행히도 해당 인코딩에서 표기못하는 문자는 유니코드로 자동으로 변환되서 저장됩니다. 또한 자바 Properties클래스에서 한글로 변환하긴하지만 가독성이 떨어진다는 단점은 피할수 없지만요... 그래서 주석을 한글로 작성하는건 피하시는것을 추천합니다
모
... 더 보기데
... 더 보기