3

스프링 부트를 사용하여 마이크로 서비스를 개발했습니다. 이 서비스는 Spring 클라우드 설정 서버를 사용하여 등록 정보를 가져옵니다. 이 마이크로 서비스는 헤더의 버전을 받아들이고 버전에 따라 적절한 기능을 실행합니다. 나의 github repo에서는, 나는 2 개의 가지, 각 버전을 위해 1을 가지고있다.Spring Cloud Config Server - 자리 표시 자 레이블

애플리케이션 이름 + 프로필 + 라벨

내 .yml 파일에 라벨 대신에 자리를 가질 수있는 방법이 있나요 -이 서비스는 일반적으로 속성을 가져 오기 위해 설정 서버에 아래의 정보를 전송? 헤더에서 v1이 보이면 v1을 동적으로 설정해야합니다. v2.

편집 : 내가 그러나 나는 값이 들어오는 요청에서 동적으로 대체 할 수있는 방법을 잘 모르겠습니다, 참조가 "망할 놈의 URI에 자리 표시를"섹션에서이 문서 (http://cloud.spring.io/spring-cloud-config/spring-cloud-config.html)에 위치 지정자로 볼

답변

0

spring-cloud-config-server는 몇 가지 REST API를 사용할 수있게하여 속성 파일을 직접 쿼리 할 수있게합니다.

$ hostname:port/{label}/{name}-{profiles}.properties] 

기존의 git 레이블과 일치하는 한 원하는 벨 application.properties를 검색하는 예를 들어

는 자식에 v1 레이블 :

$ http://${hostname}:${port}/v1/application.properties 

구성 서버의 REST API :

  • /{이름}/{프로파일}/{라벨 :. *
  • /{label}/{name}-{profiles}.properties
  • /{name}-{profiles}.json
  • /{label}/{name}-{profiles}.json
  • /{label}/{name}-{profiles}.yml
  • /{라벨}/{이름} - {프로파일}. YAML
  • /{name}-{profiles}.yml
  • /{name}-{profiles}.yaml
  • /{이름}/{프로파일 :. [^ -].}
  • /{name}-{profiles}.properties
  • /{이름}/{프로필}/{라벨}/**

는 내가 함께 샘플 spring-cloud-server 프로젝트를 시도 자식에 대한 속성 파일.

라벨 V1 :

http://localhost:8888/v1/application-remote.properties 
> testproperty: remotevalue-v1 

라벨 V2 :

http://localhost:8888/v2/application-remote.properties 
> testproperty: remotevalue-v2 
I는 (I 프로필 remote 사용) 각 레이블 파일에 다른 값으로 자식 태그를 v1v2인가

레이블 없음 :

http://localhost:8888/application-remote.properties 
> testproperty: remotevalue-master 

자바 코드

나는 그것을 시도하지 않은,하지만 난 당신이 또한 주입 컨트롤러를 호출하는 대신 직접 HTTP 요청을하고 클라우드 설정 서버의 자바 API를 (사용할 수있는 가정) :

@Autowired 
EnvironmentController environmentController; 
... 

Environment labelled = environmentController.labelled("application", "remote", "v1"); 
Map<?, ?> keyValues = labelled.getPropertySources().get(0).getSource();