해결된 질문
작성
·
704
1
안녕하세요 강의 듣던 도중 질문이 있어서 글 남깁니다.
Navitve File Repository 강의에서 마지막 부분에 user-service.yml을 복사해서 user-service-dev.yml로 만들어주셨는데요
웹에서 확인 할 때 url 뒤에 native로 들어가서 확인을 하였는데
user-service-dev.yml을 만들게 되면 어떻게 확인을 하는 것인지, user-service-dev.yml을 적용할 수 있는 것인지 궁금합니다.
user-service-dev.yml은 profile이 dev로 되어있어야 적용 가능한 것으로 알고있고 profiles.active를 dev로 바꾸게 되면 user-service-dev.yml만 적용되게 되는 것인가요?
감사합니다.
답변 3
1
안녕하세요, 이도원입니다.
application.yml과 같은 설정 파일은 다음과 같이 3가지 종류로 사용하실 수 있으며, 각 파일마다 Spring Boot에 읽어 들이는 우선순위가 정해져 있습니다.
1. application.yml
2. [application-name].yml
3. [application-name]-[profile].yml
우선순위는 3개의 파일이 모두 존재한다고 가정했을 때, 3번 - 2번 - 1번 순입니다.
spring config service에 설정된 내용을 웹 브라우저에서 확인하기 위해서 (port가 8888이라 가정할 때)
http://127.0.0.1:8888/[application name]/[profile] 로 접속하시면 됩니다. 이중 profile을 지정하지 않으면 default가 설정 되며, 질문하신 내용처럼 dev porfile을 확인하시고자 한다면
http://127.0.0.1:8888/user-service/dev 라고 하시면 됩니다.
profile을 지정해서 해당 애플리케이션을 실행하면, profile의 설정 파일이 사용되며, profile에 존재하지 않는 항목들은 바로 위 단계인 [application-nae].yml 파일, 그리고 application.yml에서 정보를 검색해서 사용하게 됩니다. 쉽게 말해 profile의 설정은 해당 profile에서 추가하거나 변경(override)하려는 설정을 넣어서 사용하시면 됩니다. 예를 들어 dev 환경에서의 DB 접속 정보를 prod 환경과 달리 하는 등의 정보를 설정하시면 됩니다.
감사합니다.
0
안녕하세요, 이도원입니다.
http://127.0.0.1:8888/user-service/native 라고 입력하신건, user-service라는 애플리케이션의 native라는 프로파일을 읽어오겠다는 의미입니다. 따라서, user-service.yml, user-servic-native.yml 이라는 파일이 있어야 정상적으로 작동되며, user-service-native.yml 파일이 없을 경우에는 default인 user-service.yml 파일을 읽어오게 됩니다.
Spring Config Server에서 설정하는 profile의 정보에 따라 configuration 정보를 읽어올 장소를 정하게 됩니다. 이 Config Server를 사용하는 user-service나 order-service, catalog-service 들의 애플리케이션에서 profile을 지정하게 되면, 해당 Config Server에서 읽어 올 애플리케이션명과 지정된 Profile을 조합하여 configuration 파일을 사용할 수 있게 됩니다. 다음은 user-service에 있는 bootstrap.yml 파일입니다.
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: user-service
profiles:
active: dev
위와 같은 설정으로 user-service를 기동하게 되면, 다음과 같은 로그를 확인하실 수 있습니다.
user-service 애플리케이션에서 읽혀지는 설정 파일은 user-service-dev.yml, user-service.yml, application.yml 파일이 됩니다.
감사합니다.
0
안녕하세요. 저도 보면서 질문하신 분과 비슷한 의문이 들었는데요.
답변 주신대로라면 강의에서
http://127.0.0.1:8888/user-service/native라고 입력하였던 부분에서
native는 있던 없던 의미가 없는 것 같은데 맞을까요?
제가 이해를 잘 못하고 질문 드렸던 것 같습니다.
강의 다시 듣고 친절하게 작성해주신 답글 보니 이해가 되었습니다.
감사합니다