1.新建Config客户端

项目名称:cloud-config-client-3355

鼠标点击父工程项目右击 —> New —> Module

具体创建步骤参考【搭建EurekaServer端服务注册中心

2.添加 pom.xml

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.cloud</groupId>
  4. <artifactId>spring-cloud-starter-config</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.cloud</groupId>
  8. <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>com.cloud</groupId>
  12. <artifactId>cloud-api-commons</artifactId>
  13. <version>${project.version}</version>
  14. </dependency>
  15. <dependency>
  16. <groupId>org.springframework.boot</groupId>
  17. <artifactId>spring-boot-starter-web</artifactId>
  18. </dependency>
  19. <dependency>
  20. <groupId>org.springframework.boot</groupId>
  21. <artifactId>spring-boot-starter-actuator</artifactId>
  22. </dependency>
  23. <dependency>
  24. <groupId>org.springframework.boot</groupId>
  25. <artifactId>spring-boot-devtools</artifactId>
  26. <scope>runtime</scope>
  27. <optional>true</optional>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.projectlombok</groupId>
  31. <artifactId>lombok</artifactId>
  32. <optional>true</optional>
  33. </dependency>
  34. <dependency>
  35. <groupId>org.springframework.boot</groupId>
  36. <artifactId>spring-boot-starter-test</artifactId>
  37. <scope>test</scope>
  38. </dependency>
  39. </dependencies>

3.添加 bootsrap.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配置的分离。

要将 Client模块下的 application.yml文件改为bootstrap.yml这是很关键的
因为bootstrap.yml是比application.yml先加载的。bootstrap.yml优先级高于 application.yml

配置内容:

  1. server:
  2. port: 3355
  3. spring:
  4. application:
  5. name: config-client
  6. cloud:
  7. config: #Config客户端配置
  8. enabled: true #是否启用配置中心功能,默认true是开启的
  9. label: master #githup/gitee分支名称
  10. name: config #配置文件名称
  11. profile: dev #读取后缀名称 ,根据上面三个配置:master分支上的config-dev.yml的配置文件被读取http://localhost:3344/master/config-dev.yml
  12. uri: http://localhost:3344 #配置中心地址
  13. eureka:
  14. client:
  15. service-url:
  16. defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka

解释:
image.png

4.添加主启动类

@EnableEurekaClient
@SpringBootApplication
public class ConfigClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

5.添加控制器类和数据实体类

Config客户端获取Config配置中心端中的配置文件里的数据

添加数据Bean,@ConfigurationProperties指定配置文件数据Key的前缀

@Data
@Component
@ConfigurationProperties(prefix = "data")
public class GitConfigData {

    private String port;

    private String name;

    private String info;

}

配置中心服务端配置文件内容如下:

data:
  port: 9999
  name: "测试"
  info: "config info for dev(master)"

控制器类内容如下:

@RestController
public class ConfigClientController {

    @Autowired
    private GitConfigData gitConfigData;

    @GetMapping("/configInfo")
    public GitConfigData getConfigInfo() {
        return gitConfigData;
    }
}

6.启动并测试

启动Eureka注册中心:cloud-eureka-server7001,cloud-eureka-server7002
启动配置中心:cloud-config-center-3344
启动Config客户端:cloud-config-client-3355
浏览器输入:http://localhost:3344/config-dev.yml
返回如下内容:

{"port":"9999","name":"测试","info":"config info for dev(master)"}

成功实现了客户端3355访问SpringCloud Config3344通过GitHub获取配置信息