본문 바로가기
Backend

application.properties와 application.yml 의 차이점

by Dddu 2024. 5. 26.

스프링부트는 일반적으로 프로젝트의 설정을 properties 혹은 yml 파일에 하게된다.

둘 다 서버정보나 profile 등을 설정할 수 있는 외부 설정파일이지만, 어떤 프로젝트는 yml 어떤 프로젝트는 properties를 사용하길래 차이점이 문득 궁금해져서 검색해봤는데 잘 정리된 글을 찾았다 ! !.

 

외부설정파일

실제 프로젝트를 진행하다보면 dev, local, test , prod 등 운영환경에 따라 서버 설정이나, 데이터베이스 설정 등을 다르게 설정한다.  스프링 initializr를 통해 프로젝트를 생성하면 application.properties가 생성되지만, 종종 yml파일로 변경해서 사용하는 경우가 있다.

application.properties

properties파일은 key=value 형식으로 사용한다. 문자열만 사용가능하며, 그외 자료형은 사용할수 없다.

properties 파일은 java에서만 활용된다.
하나의 properties파일은 하나의 profile만 가지며, 여러개의 properties 파일을 생성하여 쓸수있다.

# DB Setting
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
spring.datasource.username=username
spring.datasource.password=password

application.yml

yml 파일은 properties 파일과 다르게 계층적 구조를 사용할 수 있다.
예를들어, db세팅을 할때 datasource라는 공통 구조는 상위에 한번만 작성하고, 하위에 driver, url, password 등의 구조를 선언하여 쓸 수 있다.
key,value,map,list 등을 사용할 수 있으며, java 외에도 파이썬이나 루비에서 활용될 수 있다.
하나의 properties 파일에 하나의 profile만 설정할 수 있었던것과 다르게, yml 파일에는 여러개의 profile을 정리해둘 수있다.

# DB Setting
spring:
  datasource:
    driver-class-name: oracle.jdbc.driver.OracleDriver
    url: jdbc:oracle:thin:@localhost:1521:orcl
    username: username
    password: password

위와같이 계층적인 선언은 properties에서 같은 구조내부의 설정들을 여러번 작성해야했던 불편함을 해소할 수 있다.

우선순위

yml 파일과 properties 파일을 함께 사용하면 properties 파일이 우선순위가 높아 yml 파일의 설정이 이를 덮어 쓰게 된다. 따라서 한 프로젝트내에선 둘중 하나의 파일만 쓰기를 권장한다고 한다.

 

 

*참고

https://velog.io/@lily_younk/application.yml-.properties-차이

'Backend' 카테고리의 다른 글

URI와 웹 브라우저 요청 흐름  (1) 2024.06.02
Spring Security Config hasRole 사용시 주의점  (0) 2024.06.02
HTTP 기본  (0) 2024.05.19
HTTP 메서드의 종류와 속성  (0) 2024.05.12
Spring 분산락과 Transaction ACID 유지  (0) 2024.05.05