20191003 尚硅谷Spring Cloud教学视频 (6)

为配置中心项目增加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

测试访问配置;

20191003 尚硅谷Spring Cloud教学视频

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中的

profile: test

再次启动时,启动端口应该是8202;
证明成功;

application.yml和bootstrap.yml

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 的分离。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzysjd.html