https://github . com/piomin/sample-spring-cloud-config-repo.git.
在该存储库中放置了本章第一个示例所使用的所有属性源,其中说明了在不同发现区域中运行的客户端应用程序的原生配置文件支持。现在,该存储库保存了此列表中可见的文件,如图5.3所示。
Spring Cloud Config Server默认会在第一次 HTTP资源调用后尝试克隆存储库。如果要在启动后强制克隆它,则应将cloneOnStart属性设置为true。除此之外,还需要设置存储库连接设置和账户身份验证凭据。
spring:
application:
name: config-server
cloud:
config:
server:
git:
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 > uri :https://github . com/piomin/ sample-spring-cloud-config-repo.git
username: ${gi thub。username }
password: $ {github. password }
cloneOnStart: true
运行该服务器之后,我们可以调用之前练习中已知的端点,如ht/o/alos/8889/client- service/zone1或ht:/oca/hos/888/eclient-servicec zone2.yml。其结果与前面的测试结果相同,唯一的区别在于数据源。
现在可以来进行另一项练习。在之前的示例中,由于采用了发现优先引导方法,并且启用了native 配置文件,所以该示例需要对客户端的属性略作修改。现在因为使用的是Git后端,所以,可以针对这种情况开发更智能的解决方案。在当前的方法中,开发人员应该在GitHub上的配置库中创建discovery 分支
tps:/ihub.o/pioin/samoplrep spring- cloud- config rep:/ree/discovery),然后再把专用于该应用程序的文件放上去(该应用程序将演示发现优先引导机制)。如果将label参数设置为discovery然后再调用Config Server端点,则它将从新分支中获取数据。开发人员可以尝试分别调用ht:/ahost:8889/client-service/zone l/discovery和htpt//ocalhost/889/dicovery/cient-servicc -zone2.yml,然后检查和对比其结果。
现在来考虑另一种情况。假设已经更改了client-service 第三个实例的服务器端口,但由于某种原因,想要回到之前的值。那么,是否必须更改并提交client-service zone3.yml才能使用先前的端口值呢?答案是不必,现在开发人员所要做的就是在调用HTTP API资源时将提交ID作为label参数传递。已经执行的更改如图5.4所示。
如果使用父提交ID而不是分支名称调用API端点,则将返回旧端口号作为响应。图5.4是调用htpt://os:/88/e5/dd6/elient-servce-zone3.yiol的结果,其中,e546dd6就是以前提交的ID。
eureka:
client:
serviceUrl :
defaultZone: http://localhost:8761/eureka/
instance :
metadataMap :
zone: zone 3
server :
port: 8083
4.客户端配置
在使用Git后端构建服务器端时,仅演示了HTTP资源调用的示例。以下是客户端应用程序的示例配置。开发人员也可以在spring.profiles.active 运行参数中传递它,而不是在bootstrap.yml中设置profile属性。此配置将使客户端可以从discovery分支获取属性。开发人员也可以决定通过在label属性中设置它来切换到某个提交ID,这在前面已经介绍过。
spring:
application:
name: client-service
cloud:
config:
uri: http://localhost:8889
profile: zone1
label: discovery
label: e546dd6 //取消代码注释即可回滚
5.多个存储库
开发人员有时可能需要为单台配置服务器配置多个存储库。例如,可以想到的一种情况是:必须将业务配置与典型技术配置分开,这绝对是有可能的。
spring:
cloud:
config:
server:
git:
uri:



