Spring

스프링 클라우드 구성 일치 프로필

기록만이살길 2021. 3. 6. 08:05
반응형

스프링 클라우드 구성 일치 프로필

1. 질문(문제점):

다음과 같이 git 저장소에 응용 프로그램 파일의 계층 구조가 있습니다.

uri : https://bitbucket.org/repositorios-company/configuration-files

예배 규칙서:

-authorization-service
----application.yml
----application-development.yml
----application-uat.yml
----application-production.yml
-cpo-executor
----application.yml
----application-development.yml
----application-uat.yml
----application-production.yml

구성 프로젝트 yml 파일에서 :

server:
    port: 8888
spring:
    application:
        name: config-server
    cloud:
        config:
            server:
                git:
                    username: ###### 
                    ....
                    uri: https://bitbucket.org/repositorios-company/cup-configuration-files
                    searchPaths: '{application}'

문제점 :

  1. url http : // localhost : 8888 / authorization-service / development 스프링로드로 개발 파일에 액세스하려고하면 예상대로 하나가 아닌 두 개의 파일이로드됩니다.
2021-01-13 10:34:40.549  INFO 141562 --- [nio-8888-exec-1] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo-3531515016986363333/authorization-service/application.yml
2021-01-13 10:34:48.950  INFO 141562 --- [nio-8888-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo-3531515016986363333/authorization-service/application-development.yml

  1. 다음 구성을 사용하여 클라이언트 응용 프로그램이 해당 구성 파일에 액세스하려고하면 spring은 profile에 해당하는 파일이 아닌 application.yml 파일 만 가져옵니다.

클라이언트 yml :

spring.application.name=authorization-service
spring.profiles.active=development
spring.cloud.config.uri=http://localhost:8888

애플리케이션이 시작된 후 스프링 클라우드 구성 로그에 기본 application.yml이 표시됩니다.

2021-01-13 11:09:11.346  INFO 144899 --- [nio-8888-exec-2] o.s.c.c.s.e.NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo-1131390371944673193/authorization-service/application.yml

편집 됨 : 런타임에서 값이 변경되었는지와 application-development.yml에서 값을 가져 왔는지 확인했지만 그렇지 않았습니다.

아무도 어떻게 두 상황에 하나의 구성 파일 만 가져올 수 있는지 알고 있습니까?

2. 해결방안:

고려해야 할 세 가지 사항 :

  1. 프로필을 "spring.profiles.active = development"로 활용했지만 Spring은 application-development.properties 파일이 아닌 application-dev.properties를 찾습니다. Spring이 어떤 프로필을 찾고 있는지 확인하기 위해 Spring 액추에이터를 사용했습니다.

스프링 액추에이터 사용 방법

http://localhost:8080/actuator/env

{"activeProfiles":["dev"],....}
  1. Spring Cloud Config에 두 개의 파일이로드되었다고 생각하더라도 해당 프로필 파일 만 애플리케이션 클라이언트에서 사용되었습니다.
INFO 373818 ...NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo/authorization-service/application-dev.properties
INFO 373818 ...NativeEnvironmentRepository  : Adding property source: file:/tmp/config-repo/authorization-service/application.properties

그러나 응용 프로그램이 프로필에 해당하는 파일 만 사용하는 데 필요한 경우 http : // localhost : 8888 / authorization-service / dev에 액세스 할 때 git 저장소에서 기본 application.yml을 제거하면됩니다.

  1. Spring Cloud Config를 사용할 때 애플리케이션 클라이언트에서 application. {yml | properties}가 아닌 bootstrap. {yml | properties}를 사용하십시오.

spring boot에서 application.yml 또는 bootstrap.yml에 속성을 두는 것의 차이점은 무엇입니까?

65703746
반응형