Spring Cloud Config动态拉取github读取配置内容

603 阅读1分钟

Spring Cloud Config 配置读取 github 上的文件内容

1. github 新建个仓库,并添加两个配置文件

image.png

配置文件 zuul-dev.yml 内容:

user:
  name: java
  age: 20

配置文件 zuul-prod.yml 内容:

user:
  name: spring
  age: 30

内容随意,主要用于测试

2. 项目添加 spring-cloud-config-server 依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>2.2.2.RELEASE</version>
</dependency>

3. 添加配置

spring:
  application:
    name: spring-cloud-config
  cloud:
    config:
      server:
        git:
          default-label: main
          uri: 这里填github上复制的那段地址

如果你的分支是 main,则配置文件需要添加 default-label: main

如果是 master,则不需要添加

image.png

4. 启动类添加注解 @EnableConfigServer

项目启动后访问 ip:端口/zuul-dev.ymlip:端口/zuul-prod.yml

分别显示配置文件中的内容则表示配置成功。

配置客户端读取 github 上的文件内容

1. 添加 spring-cloud-starter-config 依赖

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

2. 配置文件

spring:
  application:
    name: spring-cloud-zuul-server
  cloud:
    config:
      # github分支名
      label: main
      # 要读取的文件前缀
      name: zuul
      # 要读取的文件后缀
      profile: dev
      # 使用eureka服务发现,表示调用的是 spring-cloud-config 项目
      discovery:
        enabled: true
        service-id: spring-cloud-config

3. 使用

@Value("${user.name}")
private String name;

@Value("${user.age}")
private Integer age;

动态刷新配置

1. 添加 spring-boot-starter-actuator 依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2. 在用到配置文件的类上添加注解 @RefreshScope

3. 配置文件中配置

# 配置动态刷新git配置的路径终端请求地址
management:
  endpoints:
    web:
      exposure:
        include: refresh

4. 此时在github上修改配置文件后,使用 post 请求该地址:ip:端口/actuator/refresh