Spring발행일 2024. 9. 28.원본 https://blog.naver.com/jword_/223599680272 ↗

YAML을 properties대신 사용하는 이유

YAML을 properties대신 사용하는 이유 — #YAML #yamlproperties #개발자의도구들 🚨📝 📖 📒✏️💡🔍 AI스쿨 msa기반 java 백엔...

#Spring#Naver Blog

#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에 적용해보면 좋을 것 같습니다.

​

요약

  1. properties는 영어만 사용가능해서 더 이상 사용하지 않는다.
  2. properties 대신 yaml을 사용한다.
  3. 사용법만 익히면 쉽고 간결하게 코드 작성이 가능하다. (읽기도 편하다)