라이브러리/Spring boot

Application.yml Profiles를 활용한 환경 별 DB 설정

하나의묵 2023. 6. 8. 22:45

Spring Boot에서 application.yml의 Profiles를 설정해 실행 시 할당되는 profile.active 값에 따라서 각각의 디비 정보로 연결할 수 있도록 하는 방법을 소개합니다.

 

문제 상황

 

개발 환경(dev), 테스트 서버(use-testServer), 운영 환경(use)에서 각각 다른 데이터베이스에 연결하는 설정 정보를 application.yml에서 작성했습니다. 그런데 실행 시 dev 상태임에도 운영 데이터베이스에 연결되는 현상이 발생했습니다. 비슷하게 use 상태에서는 'use-testServer' 데이터베이스에 연결되는 경우도 발견했습니다

 

 

원인 분석 및 해결 방법

 

문제가 발생한 원인은 모든 프로일 설정에 'profiles: active: 상태 값'을 지정했기 때문이었습니다.

저는 active라는 것이 '상태값' 일 때 이러한 정보를 active하라는 뜻으로 이해하고 있었는데, 확인해보니

이 active를 지정하면 해당 '상태값' 을 default로 사용하는 것  이었습니다.

 

테스트 결과, 모든 프로파일 설정에 active를 추가하면 실행 시 어떤 것이 기본값인지 찾지 못해 'application.yml' 에서 가장 마지막에 등록한 'profiles: active: 상태' 값' 의 정보로 디비에 연결하는 것을 확인했습니다.

 

따라서 아래와 같이 수정하여 해결 방안을 확인했습니다.

 

1. 'profiles: active: dev'를 기본값(로컬 환경)으로 설정하고

 

2. 'use-testServer '(테스트 서버) 및 'use'(운영) 환경에서는 'profiles: use'와 같이 'active' 태그를 제거합니다.

 

이와 같이 수정한 결과, 각 프로파일에 따라 올바르게 데이터베이스에 연결되는 것을 확인할 수 있었습니다.

 

이번 글에서는  Spring Boot의 'application.yml`에서 프로파일 별로 서로 다른 데이터베이스 정보를 사용하는 방법을 소개했습니다.