YAML을 properties대신 사용하는 이유
YAML을 properties대신 사용하는 이유 — #YAML #yamlproperties #개발자의도구들 🚨📝 📖 📒✏️💡🔍 AI스쿨 msa기반 java 백엔...
#YAML #yamlproperties #개발자의도구들
🚨📝 📖 📒✏️💡🔍
AI스쿨 msa기반 java 백엔드 코스 중에 공부한 내용을 작성하였습니다
\* 현재 Spring 프로젝트를 진행 중입니다. 전체적인 목차를 보시려면 여기를 눌러주세요.
properties를 더 이상 사용하지 않습니다.
Spring 프로젝트를 시작하면, 기본적으로 properties파일이 존재합니다. 여기에 Spring 프로젝트 내에 필요한 관련 설정들을 저장하여 사용하지만, 요즘에는 yaml을 사용하는 추세입니다.
그 이유는 properties의 인코딩 방식 때문인데요. 파일을 열어 우측 하단에 보시면 인코딩 정보가 표기되 어있는데 properties에서 사용하는 인코딩은 아래와 같습니다.
ISO-8859-1 인코딩 방식은 영어 이외의 언어를 지원하지 않습니다. 아무리 프로그래밍 언어 자체가 영어라고 하더라도, 설정 파일에 다국어를 사용해야 하는 경우도 있기 때문에 치명적인 문제가 됩니다.
이를 대체하기 위해 YAML을 사용합니다.
YAML
YAML은 YAML Ain't Markup Language의 약어로 Markup Language와는 다른 형식을 가지고 있습니다.
| 🙆♀️ YAML을 이전에도 한번 다룬적이 있는데요. 기본적인 작성 방법에 대해서 정리해두었으니 참고하시면 도움이 되실 것 같습니다. |
|---|
Yaml을 Properties 대신 사용하는 이유
YAML은 Properties와는 다르게 UTF-8 인코딩을 지원합니다. 이는 영어 뿐아니라 전세계 언어를 지원합니다.
또한 YAML은 Markup 언어의 복잡하게 느껴지는 문법을 제거하여 훨씬 간결하여 작성 및 읽기에 편합니다.
이전 프로젝트 설정파일 yaml으로 변경
<?xml version="1.0" encoding="UTF-8"?><persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence\_2\_2.xsd" version="2.2"> <!-- EntityManager를 Hibernater로 등록--> <persistence-unit name="onlyJPAUnitt" transaction-type="RESOURCE\_LOCAL"> <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> <properties> <!-- DB연결 --> <property name="javax.persistence.jdbc.url" value="jdbc:mariadb://localhost:3306/http?useSSL=false"/> <property name="javax.persistence.jdbc.user" value="root"/> <property name="javax.persistence.jdbc.password" value="pw"/> <property name="javax.persistence.jdbc.driver" value="org.mariadb.jdbc.Driver"/> <property name="hibernate.dialect" value="org.hibernate.dialect.MariaDBDialect"/> <property name="hibernate.show\_sql" value="false"/> <property name="hibernate.format\_sql" value="true"/> <!-- Configuration for connection pool (HikariCP)--> <property name="hibernate.hikari.connectionTimeout" value="20000"/> <property name="hibernate.hikari.minimumIdle" value="10"/> <property name="hibernate.hikari.maximumPoolSize" value="10"/> <property name="hibernate.hikari.idleTimeout" value="300000"/> <property name="hibernate.hikari.poolName" value="SpringBootJPAHikariCP"/> </properties> </persistence-unit></persistence> |
|---|
이전에 JPA-Hibernate에서 사용한 properties 파일입니다. 이걸 YAML로 변경하였습니다.
| spring: datasource: url: jdbc:mariadb://localhost:3306/http?useSSL=false username: root password: pw driver-class-name: org.mariadb.jdbc.Driver jpa: properties: hibernate: dialect: org.hibernate.dialect.MariaDBDialect format\_sql: true show\_sql: false hibernate: ddl-auto: none # (옵션: validate, update, create-drop 등) hikari: pool-name: SpringBootJPAHikariCP connection-timeout: 20000 minimum-idle: 10 maximum-pool-size: 10 idle-timeout: 300000 |
|---|
yaml을 사용하는 것 자체에도 큰 이점이 있습니다. 코드 작성하기가 너무 쉬워지고, 읽기에도 너무 편합니다.
각자 project에 적용해보면 좋을 것 같습니다.
요약
- properties는 영어만 사용가능해서 더 이상 사용하지 않는다.
- properties 대신 yaml을 사용한다.
- 사용법만 익히면 쉽고 간결하게 코드 작성이 가능하다. (읽기도 편하다)


