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클래스에서 한글로 변환하긴하지만 가독성이 떨어진다는 단점은 피할수 없지만요... 그래서 주석을 한글로 작성하는건 피하시는것을 추천합니다
나는 가끔 조합형 한글의 아름다움에 대해 생각한다.
그 아름다움은 단순히 예쁜 글꼴이나 정갈한 종이 위의 자소 배열에서 끝나지 않는다. 진짜 매력은, 정밀한 정보 구조와 이산 수학적 규칙성 속에 숨어 있다.
2000년 초반부터 온톨로지 연구를 해왔고, 관심을 갖고 있는 사람으로서 GraphRAG 에 대해 갖고 있는 생각을 적어봤습니다.
... 더 보기안
... 더 보기직장인으로서 10년 정도 일하게 되면 피할 수 없는 순간이 바로 조직에서 리더의 역할을 받게 되는 인사발령이다. 팀원이었을 때는 내게 주어진 업무를 내가 가진 능력과 주변 동료들의 도움으로 해결하고, 그에 합당한 평가와 보상을 기다리며, 나쁘지 않는 리워드와 내 위치에 안도하며 또 새해를 맞이하고 하루하루를 버텨나가는 과정에 큰 어려움이 없다.
... 더 보기하나부터 열까지 리더가 상세히 설명해 주기를 바라는 구성원이 있습니다. 반대로 큰 얼개만 듣고 나머지는 자율적으로 하고 싶어 하는 경우도 있죠. 회식에 참여하는 것을 너무나 힘겨워 하는 구성원이 있는 반면, 동료들과 함께 시간을 보내며 가까워지는 것을 원하는 구성원도 있습니다.
... 더 보기ChatGPT 사용할 때 어떤 모델을 선택해야할지 망설여집니다. 모델명만 봐서는 어떤게 좋은지 모르겠더라고요.
... 더 보기