为配置中心项目增加GAV依赖;
<!-- springCloud Config --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <!-- 避免Config的Git插件报错:org/eclipse/jgit/api/TransportConfigCallback --> <dependency> <groupId>org.eclipse.jgit</groupId> <artifactId>org.eclipse.jgit</artifactId> <version>4.10.0.201712302008-r</version> </dependency>修改项目配置;
spring: cloud: config: server: git: uri: git@github.com:zzyybs/microservicecloud-config.git #GitHub上面的git仓库名字在主程序添加开启功能的注解;
@EnableConfigServer测试访问配置;
label在这里应该是分支的意思;
URL示例:
/application/dev/master /application-dev.yml /master/application-dev.yml注意:三者返回的内容并不相同
49.尚硅谷_SpringCloud_Config客户端通过Config服务端获得Github上的配置实现步骤:
在GitHub上新建配置文件microservicecloud-config-client.yml,保存为UTF-8格式;
spring: profiles: active: - dev --- server: port: 8201 spring: profiles: dev application: name: microservicecloud-config-client --- server: port: 8202 spring: profiles: test application: name: microservicecloud-config-client在客户端项目上添加GAV依赖;
<!-- SpringCloud Config客户端 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>新建bootstrap.yml配置文件;
spring: cloud: config: name: microservicecloud-config-client #需要从github上读取的资源名称,注意没有yml后缀名 profile: dev #本次访问的配置项 label: master uri: :3344 #本微服务启动后先去找3344号服务,通过SpringCloudConfig获取GitHub的服务地址新建Rest类,读取GitHub上的配置;
@RestController public class ConfigClientRest { @Value("${spring.application.name}") private String applicationName; @Value("${eureka.client.service-url.defaultZone}") private String eurekaServers; @Value("${server.port}") private String port; @RequestMapping("/config") public String getConfig() { String str = "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port; System.out.println("******str: " + str); return "applicationName: " + applicationName + "\t eurekaServers:" + eurekaServers + "\t port: " + port; } }启动并验证;
此时的启动端口应该是8201,修改bootstrap.yml中的
再次启动时,启动端口应该是8202;
证明成功;
application.yml是用户级的资源配置项;
bootstrap.yml是系统级的,优先级更加高;
Spring Cloud会创建一个 Bootstrap Context ,作为Spring应用的
Application Context 的父上下文。初始化的时候, Bootstrap Context 负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的 Environment 。
Bootstrap 属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap Context 和 Application Context 有着不同的约定,所以新增一个 bootstrap.yml 文件,保证 Bootstrap Context 和 Application Context 的分离。