성장에 목마른 코린이

[Spring Boot] application.yml profile 설정 본문

Java/Spring Boot

[Spring Boot] application.yml profile 설정

성장하는 코린이 2022. 11. 16. 19:37
728x90

application.yml profile 설정

local, development, production 같은 여러 환경을 하나의 application.yml 파일에 설정하고 사용하는 방법에 대해서 알아 보겠습니다.

YAML 설정

하나의 application.yml 파일에 여러 환경의 설정 정보를 저장하려면 spring.profiles를 통해 설정하면 됩니다.

Profile 구분자(---)로 구분 합니다.

# local, dev, prod 공통 설정
server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

---

spring:
  profiles: local
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"

---

spring:
  profiles: dev
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"


---
spring:
  profiles: prod
  datasource:
    url: "jdbc:mysql://service-server/web"
    username: "proddbuser"
    password: "proddbpass"

하지만 Spring Boot 2.4 부터는 spring.profiles가 deprecated 되어서 위의 방법을 사용할 수 없습니다.

2.4 버전 부터는 spring.profiles.group.<source>를 이용해 한꺼번에 그룹지어 하나의 profile로 만들수 있습니다.

spring:
  profiles:
    group:
      "local": "testdb,common"
      "dev":  "testdb,common"
      "prod": "proddb,common"


---

spring:
  config:
    activate:
      on-profile: "proddb"
  datasource:
    url: "jdbc:mysql://service-server/web"
    username: "proddbuser"
    password: "proddbpass"

---


spring:
  config:
    activate:
      on-profile: "testdb"
  datasource:
    url: "jdbc:mysql://test-server/test"
    username: "dbuser"
    password: "dbpass"

---

spring:
  config:
    activate:
      on-profile: "common"

server:
  port: 8080
  tomcat:
    uri-encoding: UTF-8

prod 프로파일 그룹은 proddb와 common 프로파일로 구성되어있는데,

spring.profiles.active=prod로 실행하게 되면 proddb와 common 두개의 프로파일을 한번에 실행할 수 있습니다.

사용

사용하는 방법은 위 예시의 코드처럼 profile을 선택해서 실행하면 됩니다.

Jar

java -jar myapp.jar --spring.profiles.active=prod

IntelliJ

  1. Run > Edit Configurations... 선택
  2. Spring Boot Application 선택
  3. Active profiles 에서 원하는 profile 명을 입력 후 실행
Comments