application.properties & application.yml

Bam·2024년 10월 11일
0

Spring

목록 보기
42/48
post-thumbnail

스프링부트를 공부하면서 프로젝트를 할 때마다 가장 먼저 하는 일 중 하나는 application.properties 파일에 설정 정보를 수정하는 일이었습니다.

여러 자료들을 참고하면서 공부하다보니 어느 자료에서는 application.properties 파일을 설정 정보에 사용하고 어느 자료에서는 application.yml을 사용하는 경우가 있었습니다.

그래서 두 파일의 차이는 무엇이지?하고 조사해보게 되었습니다.


두 코드 비교

들어가기 앞에서 .properties, .yml 코드를 가져왔습니다. 서버 포트 설정과 jdbc 설정만을 설정한 간단한 설정 파일이며 두 파일의 내용을 실행했을 때 동일합니다.

.properties

server.port=8080

spring.datasource.url=jdbc:[Database]://localhost:3306/[Database스키마]
spring.datasource.username=[DB 아이디]
spring.datasource.password=[DB 비밀번호]
spring.datasource.driver-class-name=[JDBC 드라이버]

.yml (=.yaml)

server:
  port: 8080
 
spring:
  datasource:
    url: jdbc:[Database]://localhost:3306/[Database스키마]
    username: [DB 아이디]
    password: [DB 비밀번호]
    driver-class-name: [JDBC 드라이버] 

1. 파일 포맷

.properties키-값 쌍과 =를 사용해서 설정을 구성합니다. 그리고 각 설정간 .을 이용해서 계층 구조를 표시해서 나타내고 있습니다.

그리고 .yml은 설정 이름과 :을 사용해서 설정을 구성합니다. 이때 : 뒤의 설정 값에는 반드시 한 칸의 공백이 있어야합니다. 또한 계층구조는 들여쓰기(space 2번)을 통해서 표현하고 있습니다.

2. 가독성 & 편의성

위에서 본 파일 포맷 형태의 차이로 인해 .yml이 가독성 면에서 더 좋습니다.

또한 .properties는 모든 설정에 대해 모든 계층 구조를 적어주어야 했었지만, .yml은 계층 구조를 일일이 작성할 필요가 없어서 작성하기도 더 편합니다.

3. 타입

.properties는 String 형태의 데이터만 지원을 해서 리스트 등의 데이터를 표현해야할 때는 일일이 여스트 등의 데이터를 표현해야할 때는 데이터를 하나씩 열거해야 한다는 문제점이 있습니다.

.yml은 배열, 리스트, 숫자 등의 타입도 지원하기 때문에 다양한 데이터 타입을 설정 정보에 사용할 수 있습니다.


그래서 어떤 것을 선택할까?

자료를 조사해보면서 느낀건데 의외로 내용이 방대하길래 최대한 큰 특징 세 개만 뽑아서 글을 쓰다보니 .yml이 훨씬 좋아보이게 작성된 것 같습니다.

그래서 결론만 말하자면 '스프링 부트는 두 가지 형식을 완벽하게 지원하므로 프로젝트 상황마다 다르다!'라고 할 수 있습니다.

  • .yml의 경우에는 계층 구조가 복잡해지거나, anchor, alias, override같은 기능이 필요할 때 사용하면 좋습니다.

  • .properties의 경우에는 placeholder(${})를 이용한 동적 값 주입이나 @PropertySource를 통한 조건부 설정 적용이 필요한 경우에 사용하면 좋습니다. 또는 레거시 시스템과 호환이 필요하다고 생각되면 사용합니다.

0개의 댓글