배경
Spring을 공부하고 있다면 어쩔 수 없이 마주치는 것이 .yml과. properties이다.
겉으로 보기엔 별 차이가 없어 보여서 도대체 무슨 차이가 있는 건지 궁금해서 찾아해보았다.
개념
먼저 둘의 공통점을 말하자면 포트, 데이터베이스 연결 정보 등의 프로그램이 실행되는데 필요한 구성 속성을 갖고 있는 파일이다.
이것을 사용하는 이유는 타 시스템과 연동할 때 생기는 문제를 방지하기 위해서이다.
개인마다 변수명을 정하거나 메서드를 만드는 것처럼 데이터를 표현하는 방식은 다르기 때문에 이러한 서로 다른 방식들을 통일시키고 관리하기 쉽게 그리고 가독성을 높이기 위해 사용한다.
차이
YAML(.yml) | .properties |
스펙을 찾을 수 있다(링크) | 자체적으로 스펙을 알 수 있는 사이트가 없다. 그나마 알 수 있는 방법은 javadoc 이다. |
Human Readable 하고 가독성이 비교적 좋다. | Human Readable 하다. |
Key/Value, Map, List 등을 지원한다. | Key/Value 와 문자열만 지원한다. |
Python, Ruby, Java와 같은 언어들에 많이 쓰인다. | 오직 자바에만 쓰인다. |
Spring Framework는 .yml 파일이 있는 @PropertySources를 지원하지 않는다. | .properties 파일이 있는 @PropertySources를 지원한다. |
Spring Profile을 쓴다면 하나의 YML에 여러 개의 profile을 가질 수 있다. | 각각의 profile은 하나의 properties 파일만을 갖는다 |
configuration에 있는 해당 자료형(int, string 등)에 맞는 값을 얻을 수 있다. | .properties 파일에 있는 실제 값 유형에 관계없이 문자열만을 얻는다. |
결론
YAML은 properties에 비해 여러 언어에 쓰이고 같은 configuration 파일을 여러개의 애플리케이션이 읽을 수 있으며
계층 구조이기 때문에 가독성에 이점이 있다는 것을 알 수 있다.
<출처>
https://www.geeksforgeeks.org/difference-between-yaml-yml-and-properties-file-in-java-springboot/
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring] Spring Cloud Eureka Server를 만들어보자 (0) | 2022.10.10 |
---|---|
[Spring] Deprecated 된 WebSecurityConfigurerAdapter (1) | 2022.07.13 |
템플릿 캐싱에 대해 (0) | 2022.06.14 |