springcloud config demo搭建

springcloud config demo

服务端搭建

新建远程git仓库,保存配置,并将仓库拉到本地,以后更新配置可在本地更新,在push到远程仓库

在这里插入图片描述

在这里插入图片描述

新建3355配置中心模块

添加依赖:

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

主启动开启配置:

@SpringBootApplication
@EnableConfigServer
public class ConfigServer {

    public static void main(String[] args) {
        SpringApplication.run(Configuration.class,args);
    }
}

yaml配置文件:

server:
  port: 3355

spring:
  application:
    name: cloud-config-center
  cloud:
    config:
      server:
        git:
          #uri: #Github上的git仓库名字
          uri: https://gitee.com/kevin_cai_ren/springcloud-config.git
          ##搜索目录.这个目录指的是github上的目录
          search-paths:
            - springcloud-config
          username: [email protected]
          password: XXXXXX
      ##读取分支
      label: master

eureka:
  client:
    service-url:
      defaultZone: http://eureka7779.com:7779/eureka/

启动服务拉取配置

在这里插入图片描述

客户端搭建

引入依赖:

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

修改配置文件,注意,这里使用的是bootstrap.yml,原因是bootstrap是系统级配置文件,优先级高于application.yml

server:
  port: 3366

spring:
  application:
    name: config-client
  cloud:
    #Config客户端配置
    config:
      label: master #分支名称
      name: config #配置文件名称
      profile: dev #读取后缀名称 上诉3个综合就是 master分支上 config-dev.yml
      uri: http://config-3355.com:3355 # 配置中心地址

eureka:
  client:
    service-url:
      defaultZone:  http://eureka7779.com:7779/eureka/

主启动:

@EnableEurekaClient
@SpringBootApplication
public class ConfigClient {

    public static void main(String[] args) {
        SpringApplication.run(ConfigClient.class,args);
    }
}

@Value注解读取配置

@RestController
public class TestController {

    @Value("${config.info: test}")//读远程配置,:后边是默认值
    private String info;

    @RequestMapping("/get")
    public Object get(){
        return info;
    }
}

测试:

在这里插入图片描述

但是存在一个问题,如果我修改了远程配置仓库的配置,发现客户端读取的到配置并没有立马更新,得重启一次才行。

解决:

采取动态刷新

引入监控依赖:

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

修改yml暴露监控端点:

#暴露监控端点
management:
  endpoints:
    web:
      exposure:
        include: "*"

在读取配置的类上新增注解@RefreshScope

@RestController
@RefreshScope
public class TestController {

    @Value("${config.info: test}")//读远程配置,:后边是默认值
    private String info;

    @RequestMapping("/get")
    public Object get(){
        return info;
    }
}

ok,这样就实现了动态刷新,需要两个步骤:

  • git修改配置
  • 发送一个post请求,请求地址:http://localhost:3366/actuator/refresh

这样就可以是实现半自动更细hhh

猜你喜欢

转载自blog.csdn.net/weixin_41922289/article/details/106799346