[Spring Boot] Profile을 활용한 application.yml 세팅

Sungjin Cho·2024년 5월 3일
0

Spring Boot

목록 보기
3/15
post-thumbnail

필요성

Spring Boot로 프로젝트를 진행하다 보면 application.yml 파일을 local, develop, product 등 서비스가 실행되는 환경이 달라 각각 다른 설정을 해야하는 경우가 있다.

예를 들어 환경별로 DB나 서버 포트 등이 다른 경우, 다른 DB를 사용하는 경우 등이 있는데 이 때 Spring Boot의 Profile을 이용하면 번거롭게 매번 설정을 수정하는 작업을 할 필요 없이 손쉽게 알맞는 설정을 적용할 수 있다.

Spring Profile 적용하기

Spring Boot 2.4 이전

Spring Boot 2.4 이전 버전에서는 application.yml 파일에

# application.yml

spring:
  profiles:
    active: dev

이런식으로 적용할 Profile(dev)을 spring.profiles.active에 등록해

이와 같은 구조로 여러 개의 application-{profile}.yml 파일을 만들어야 했다.

예시 파일

# application-dev.yml
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/db?useSSL=false&serverTimezone=Asia/Seoul&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
    username: root
    password: 1234

Spring Boot 2.4 이후

하지만 Spring Boot 2.4 버전 이후로는 하나의 application.yml 파일에서 '---' 로 구분 할 수 있도록 기능을 제공하고 있다.

# application.yml
spring:
  profiles:
    active: local # default
    group:
      local:
        - common
      prod:
        - common
---
spring:
  config:
    activate:
      on-profile: common # local과 dev에서 공통으로 사용할 설정 값

kakao:
  rest:
    api:
      key: ${KAKAO_REST_API_KEY}

---

spring:
  config:
    activate:
      on-profile: local
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    url: jdbc:mariadb://localhost:3306/db
    username: ${SPRING_DATASOURCE_USERNAME} 
    password: ${SPRING_DATASOURCE_PASSWORD}
  jpa:
    hibernate:
      ddl-auto: create
    show-sql: true
  redis:
    host: localhost
    port: 6379

---

spring:
  config:
    activate:
      on-profile: prod

위와 같이 local, prod 설정을 하나의 파일에서 작성할 수 있다.

적용 방법

  • 가장 상단의 spring.profiles.active 에서 적용할 Profile(local)을 등록하여 local을 활성화 한다.
    여기서 group에 local과 prod는 따로 명시 하지 않아도 default로 local Profile이 활성화되면 local과 common이 활성화 된다.

그룹화

  • 그룹화를 통해 중복 설정을 줄일 수도 있다.
    local과 prod가 활성화 된다면 common Profile도 함께 활성화 되는 것이다. 이처럼 common Profile에 정의된 설정 값들은 local과 prod에서 공통으로 사용하도록 할 수 있다.

  • 여러 개의 설정 활성화

spring:
  profiles:
    active: dev
    group:
      prod: common, prod
      dev: common, dev,local
      
      # 이하 생략

이처럼 여러 개의 설정을 활성화 시킬 수도 있다.

Spring Profile 활용하여 개발 시에 불편함을 줄여보도록 하자.

0개의 댓글