VS Code에서 Spring Boot 프로젝트 생성 가이드 (2) - application.yml 설정, 환경 분리

luvulmi·2025년 6월 17일
post-thumbnail

🗂️ Step 2. application.yml 설정

💡application.yml이란?

Spring Boot를 쓰다 보면 application.yml이라는 파일을 자주 보게 됩니다.
처음엔 생소할 수 있지만, 이 파일은 Spring Boot 애플리케이션의 환경 설정을 담는 핵심 파일이에요.

Spring Boot는 애플리케이션 실행 시 application.yml을 자동으로 읽어서 설정값으로 사용합니다.

예를 들어 이런 것들을 설정할 수 있어요:

  • 포트 번호
  • DB 연결 정보
  • 로깅 설정
  • 배치 주기
  • 보안 설정
  • 스프링 프로파일

src/main/resources/application.properties 파일을 application.yml으로 변경합니다.

(참고) application.yml vs application.properties

둘 다 설정 파일입니다. 하지만 다음과 같은 차이가 있습니다.

항목.properties.yml (또는 .yaml)
문법key=value계층 구조 (들여쓰기 기반)
가독성긴 키는 보기 힘듦구조적이고 가독성 좋음
예시server.port=8080server:\n port: 8080

✅ 요즘은 대부분 .yml을 선호합니다. 특히 설정 항목이 많을수록 가독성 차이가 큽니다.


💡 application.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에 작성한 내용들이 덮어쓰기 되는 방식입니다.

profile
멋쟁이 초보 개발자

0개의 댓글