Spring Cloud 学习 Spring Cloud Config

Posted victorbu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud 学习 Spring Cloud Config相关的知识,希望对你有一定的参考价值。

在实际开发过程中,每个服务都有大量的配置文件,例如数据库的配置、日志输出级别的配置等,而往往这些配置在不同的环境中也是不一样的。随着服务数量的增加,配置文件的管理也是一件非常复杂的事

在微服务架构中,需要有统一管理配置文件的组件,例如 Spring Cloud 的 Spring Cloud Config、阿里的 Diamond、百度的 Disconf、携程的 Apollo 等

新建 spring-cloud-config-server

从本地读取配置

pom

<parent>
    <artifactId>spring-cloud-parent</artifactId>
    <groupId>com.karonda</groupId>
    <version>1.0.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>

<artifactId>spring-cloud-config-server</artifactId>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-config-server</artifactId>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

application.yml

server:
  port: 8061

spring:
  application:
    name: config-server

  profiles:
    active: native # 从本地读取配置

  cloud:
    config:
      server:
        native:
          search-locations: classpath:/shared # 本地配置路径

新建配置文件 shared/eureka-client-dev.yml

version: 1.0.0

启动类

@EnableConfigServer // 开启 Config Server
@SpringBootApplication
public class ConfigServerApp 
    public static void main(String[] args)
        SpringApplication.run(ConfigServerApp.class, args);
    

测试

启动 config-server

访问 http://localhost:8061/eureka-client/dev 可以看到配置

在客户端使用

在 eureka-client 测试

添加依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

添加配置 bootstrap.yml

spring:
  application:
    name: eureka-client

  cloud:
    config:
      uri: http://localhost:8061
      fail-fast: true

  profiles:
    active: dev

bootstrap.yml 优先于 application.yml

修改测试代码

@RestController
public class HiController 

    @Value("$server.port")
    int port;

    @Value("$version")
    String version;

    @GetMapping("/hi")
    public String home(@RequestParam String name)
        return "Hello " + name + ", from port: " + port + ", version: " + version;
    

测试

  1. 启动 config-server
  2. 启动 eureka-server
  3. 启动 eureka-client

访问 http://localhost:8011/hi?name=Victor

从远程 Git 仓库读取配置

修改 application.xml

server:
  port: 8061

spring:
  application:
    name: config-server

#  profiles:
#    active: native # 从本地读取配置

  cloud:
    config:
      server:
#        native:
#          search-locations: classpath:/shared # 本地配置路径
        git:
          uri: https://github.com/VictorBu/spring-cloud-config-demo
          search-paths: repo # 搜索的文件夹地址
#          username: # 如果是私有仓库须配置
#          password: # 如果是私有仓库须配置
      label: master # git 仓库分支名

测试

参考上节

完整代码:GitHub

本人 C# 转 Java 的 newbie, 如有错误或不足欢迎指正,谢谢

?

以上是关于Spring Cloud 学习 Spring Cloud Config的主要内容,如果未能解决你的问题,请参考以下文章

Spring Cloud 学习 Spring Cloud Config

Spring Cloud 学习——7. Spring Cloud Config

Spring Cloud 学习 Spring Boot Admin

spring+cloud学习

spring-cloud-Zuul学习--典型配置重新定义spring cloud实践

Spring Cloud 与微服务学习总结(15)—— Spring Cloud 2021.0.1 发布