application.properties와 application.yml 설정하기 - Spring Boot 설정 파일 완전 정복

Spring Boot를 사용할 때 가장 먼저 마주치는 것 중 하나가 바로 application.propertiesapplication.yml 설정입니다. 둘 다 프로젝트의 설정을 관리하는 데 쓰이지만, 형식과 활용 방식에서 차이가 있습니다.

두 설정 파일의 차이점, 각각의 장단점, 실제 사용 예시를 경험적으로 정리해보겠습니다.

 

1. 공통점: 둘 다 환경 설정 파일

  • Spring Boot 애플리케이션이 시작될 때 로딩되는 설정 파일
  • 포트, DB 연결 정보, 로그 레벨, 외부 API 키 등 주요 설정을 지정
  • application.properties는 기본 포맷, application.yml은 YAML 포맷을 따름

 

2. application.properties 예시

프로퍼티 기반의 설정은 key=value 방식으로 단순하며, 적은 양의 설정에는 매우 직관적입니다.

server.port=8081
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret
logging.level.org.springframework=DEBUG

장점

  • 한눈에 보기 쉬움
  • 간단한 설정에는 가장 빠른 접근

단점

  • 중첩 구조 표현이 복잡
  • 배열, 리스트 타입 표현이 불편

 

3. application.yml 예시

YAML 포맷은 들여쓰기를 통해 구조적인 데이터를 표현할 수 있어 복잡한 설정에 적합합니다.

server:
  port: 8081

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: secret

logging:
  level:
    org.springframework: DEBUG

장점

  • 구조화된 설정에 강함 (중첩, 배열)
  • Spring Cloud와의 통합에도 주로 사용

단점

  • 들여쓰기 오류로 인한 디버깅 어려움
  • 간단한 설정에도 불필요하게 길어질 수 있음

 

4. 어떤 포맷을 써야 할까?

실무에서는 개인이나 팀의 선호, 프로젝트 복잡도, DevOps 도구 연계 여부에 따라 선택합니다.

  • 간단한 프로젝트: application.properties
  • 복잡한 설정/다중 환경 분리: application.yml

중요한 건 포맷보다 설정의 명확성과 유지 보수성입니다.

 

5. profile별 설정 분리

Spring Boot는 환경별 설정을 아래와 같이 분리할 수 있습니다.

  • application-dev.yml
  • application-prod.properties

그리고 실행 시 --spring.profiles.active=prod로 지정하면 해당 설정이 자동으로 적용됩니다.

 

6. 결론

프로젝트의 성격과 팀의 경험에 따라 유연하게 propertiesyml을 선택하시는 것을 추천합니다.

개인적으로는 단순할 땐 properties, 복잡하거나 계층 구조가 필요한 설정은 yml을 선호합니다.