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`에서 프로파일 별로 서로 다른 데이터베이스 정보를 사용하는 방법을 소개했습니다.
'라이브러리 > Spring boot' 카테고리의 다른 글
Spring Boot에서 API 개발 시 Response 반환 형식 문제 해결 방법 (0) | 2023.09.02 |
---|---|
Spring Boot Web Server Log 저장 문제 (2) | 2022.09.16 |