작성
·
266
·
수정됨
0
안녕하세요
강의를 듣던중 profile이 어떻게 적용되는지 궁금하여 질문드리게 되었습니다.
현재 dev관련 설정파일이 왼쪽
공통 항목 테스트를 위한 application.yml 파일이 오른쪽
입니다.
모두 같은 common이라는 환경변수로 어떤 .yml파일의 값을 사용하는지 확인하였는데요
user-service의
profile설정은 아래 사진처럼 하였습니다.
health-check를 보내서 common값을 확인했을 때,
아래사진 처럼 application.yml파일의 common값을 사용하는 것을 확인하였습니다.
공통으로 가져오는 application.yml파일의 common값과
ecommerce-dev.yml의 common값이 겹칠 때
profile을 dev라 설정했기 때문에
health-check로 요청시
common값에 common-dev 로 찍힐것이라 생각했었습니다.
혹시 common-dev로 안찍히는 이유가 공통으로 가져오는 application.yml값과 환경변수가 겹친다면 공통으로 가져오는 yml파일의 환경변수로 찍히는 것인지
제가 profile설정을 잘못한 것인지 궁금해 질문드렸습니다 ㅠㅠ
답변 1
-1
안녕하세요, 인프런 AI 인턴입니다.
Spring Boot에서 profile을 설정할 때, application-{profile}.yml
또는 application-{profile}.properties
파일을 사용합니다. 이런 파일들은 application.yml
또는 application.properties
파일과 함께 사용하여 환경에 따른 구성을 구분할 수 있게 해줍니다. 예를 들어 dev
프로파일을 활성화했을 경우 application-dev.yml
파일의 설정이 application.yml
파일의 설정보다 우선 적용됩니다.
다만, 여러 프로파일이 활성화 되어있을 때 마지막에 정의된 프로파일의 설정이 우선 적용된다는 ‘last-wins’ 전략에 따라 프로파일이 적용됩니다. 그리고 프로파일의 설정값은 같은 위치에 있는 파일들끼리만 오버라이드가 가능합니다.
설정 파일이 여러 위치에 정의되어 있다면, 예를 들어 classpath:/cfg/
와 classpath:/ext/
가 있다면 이들 위치 그룹 간의 오버라이드 규칙은 다를 수 있습니다. 이 경우, 해당 위치 그룹별로 프로파일에 해당하는 설정 파일을 찾아서 적용합니다.
따라서, 제시하신 common
변수에 대해 ecommerce-dev.yml
과 application.yml
파일에서 겹치는 설정이 있다면 dev
프로파일이 활성화되었다 하더라도, 어떤 common
값이 적용되는지는 파일의 위치, 우선 순위 및 프로파일이 활성화된 순서에 따라 달라질 수 있습니다. 점검해야 할 사항으로는 실제 dev
프로파일이 올바르게 활성화 되었는지, ecommerce-dev.yml
파일의 위치가 application.yml
에 우선하는지 등이 있습니다.
상세한 프로파일 우선순위에 대한 내용은 Spring Boot 공식 문서의 “18.2. Properties and Configuration > 18.2.8. Change Configuration Depending on the Environment” 및 “7. Core Features > 7.2. Externalized Configuration > 7.2.3. External Application Properties > Profile Specific Files” 부분을 참조해보시는 것이 좋습니다.
자세한 내용은 아래 링크에서 확인하실 수 있습니다.
- 프로파일 변경에 따른 설정 변경 방법: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto.properties-and-configuration.change-configuration-depending-on-the-environment
- 프로파일 별 특정 파일: https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.external-config.files.profile-specific
이 정보가 문제 해결에 도움이 되길 바랍니다.