Summry
본 문서에서는 yml을 properties와 비교정리한다.
yml yaml?
- 최근 스프링이나 쿠버네티스 같은 프로그램의 ‘설정 파일’ 저장 양식으로 많이 쓰이는데, yaml파일의 확장자가 .yml이 된다.
send me email if you have any questions.
YAML(YML Ain’t Markup Language)
- XML, C, Python, Perl, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 ‘사람이 쉽게 읽을 수 있는’ 데이터 직렬화 양식.
- YAML은 모든 데이터를 리스트, 해쉬, 스칼라 데이터의 조합으로 적절히 표현할 수 있다는 믿음을 가지고 만들어졌다.
- YAML은 모든 데이터를 리스트, 해쉬, 스칼라 데이터의 조합으로 적절히 표현할 수 있다는 믿음을 가지고 만들어졌다.
- 문법은 상대적으로 이해하기 쉽고, 가독성이 좋도록 디자인되었으며, 고급 컴퓨터 언어에 적합하다.
- JSON은 yaml의 일종이다.
장점
1. 가독성이 좋다
- 계층구조로 표현하여 가독성이 좋다. 또한 불필요한 소스의 중복도 제거 할 수 있다.
- 들여쓰기, 띄어쓰기로 구분하여 보기 편하다.
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mariadb://localhost:3306/test?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.hikari.username=root
spring.datasource.hikari.password=qlalfqjsgh
spring.datasource.hikari.maximum-pool-size=10
spring:
datasource:
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mariadb://localhost:3306/test?characterEncoding=UTF-8&serverTimezone=UTC
hikari:
username: root
password: qlalfqjsgh
maximum-pool-size: 10
2. 리스트 표현
- 여러 줄에 쓸 때에는 하이픈(-)으로 시작하는 한 줄에 하나의 요소를 표현한다.
- 한 줄에 모아 쓸 때에는 대괄호([])를 이용하며 쉼표로 각 요소를 구분한다.
my.servers[0]=dev.example.com
my.servers[1]=another.example.com
my:
servers:
- dev.example.com
- another.example.com
또는
my:
servers: [dev.example.com, another.example.com]
3. 주석
spring:
datasource: #db 접속 정보
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mariadb://localhost:3306/test?characterEncoding=UTF-8&serverTimezone=UTC
hikari: #hikari 설정 정보
username: root
password: qlalfqjsgh
maximum-pool-size: 10
4. SpringBoot Profile 적용이 용이하다.
- 한 파일 내에서 여러 파일을 사용하는 것처럼 분리가 가능하다.
- application.yml 파일 하나로 여러개의 yml을 생성 한것과 같이 처리 가능
단점
1. @PropertySource 어노테이션으로 프로퍼티 값을 불러 올 수 없다.
- 해당 어노테이션을 사용 하려면 프로퍼티 파일을 사용해야된다.
기타
.properties나 .yml 파일은 Kebob case를 권장 한다.
Kebab case란?
- camelCase 와 달리 모두 소문자로 표현하며 단어와 단어 사이를 대시(-)를 이용하여 구분합니다. 스프링의 yml파일이나 url주소에서 사용한다.
- 변환 전 : My Visitor Count
- 변환 후 : my-visitor-count
Reference
[스프링부트 (11)] SpringBoot YAML 적용하기(properties vs yaml) - 갓대희
Camel case, Kebab case, Snake case 그리고 Pascal case - 양’s World
PREVIOUSSpring boot Service와 ServiceImpl
NEXTSpring Bean