
Spring Boot를 쓰다 보면 application.yml이라는 파일을 자주 보게 됩니다.
처음엔 생소할 수 있지만, 이 파일은 Spring Boot 애플리케이션의 환경 설정을 담는 핵심 파일이에요.
Spring Boot는 애플리케이션 실행 시 application.yml을 자동으로 읽어서 설정값으로 사용합니다.
예를 들어 이런 것들을 설정할 수 있어요:
src/main/resources/application.properties 파일을 application.yml으로 변경합니다.


둘 다 설정 파일입니다. 하지만 다음과 같은 차이가 있습니다.
| 항목 | .properties | .yml (또는 .yaml) |
|---|---|---|
| 문법 | key=value | 계층 구조 (들여쓰기 기반) |
| 가독성 | 긴 키는 보기 힘듦 | 구조적이고 가독성 좋음 |
| 예시 | server.port=8080 | server:\n port: 8080 |
✅ 요즘은 대부분 .yml을 선호합니다. 특히 설정 항목이 많을수록 가독성 차이가 큽니다.
local에만 개발을 할거라면 분리를 할 필요 없이 application.yml 한 파일 안에 설정을 해줘도 상관 없지만 운영, 배포 환경으로 나뉘는 경우에는 다음과 같이 환경 분리 설정이 필요합니다.
디렉터리 구조
src/
└── main/
└── resources/
├── application.yml ← 공통 설정
├── application-local.yml ← 로컬용
├── application-dev.yml ← 개발용
└── application-prod.yml ← 운영용
application.yml (공통 설정)
# 포트 설정
server:
port: 8090
# spring 설정
spring:
profiles:
active: dev
# mybatis 설정
mybatis:
configuration:
multiple-result-sets-enabled: false
map-underscore-to-camel-case: true
call-setters-on-nulls: true
jdbc-type-for-null: varchar
default-fetch-size: 500
mapper-locations: classpath:mybatis-mapper/**/*.xml
# 로그 설정
logging:
config: classpath:log4j2.xml
다음 포스팅에서 설정할 mybatis, log4j2 설정도 추가해줍니다.
application-local.yml (로컬용)
# 개발서버 spring 설정
spring:
config:
activate:
on-profile: local
# DB 연결정보 설정
datasource:
url: jdbc:log4jdbc:mariadb://localhost:3306/demo_db
username: dev_user
password: dev_password
application-dev.yml (개발용)
# 개발서버 spring 설정
spring:
config:
activate:
on-profile: dev
# DB 연결정보 설정
datasource:
url: jdbc:log4jdbc:mariadb://localhost:3306/demo_db
username: dev_user
password: dev_password
application-prod.yml (운영용)
# 운영서버 spring 설정
spring:
config:
activate:
on-profile: prod
# DB 연결정보 설정
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://prod-db.mycompany.com:3306/prod_db
username: prod_user
password: prod_pw
기본 yml 설정에 작성한 내용들에게
추가로 profile에 작성한 내용들이 덮어쓰기 되는 방식입니다.