通俗易懂的SpringCloud(五) 配置中心

本文介绍如何使用 Spring Cloud Config 实现配置文件的集中管理和动态刷新。涵盖 configServer 和 configClient 的搭建过程,包括依赖引入、配置文件设置及远程配置的刷新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring cloud config

当微服务的服务过多,以及服务集群的存在,每个微服务的配置很难集中管理。但是我们可以通过SpringCloud Config通过git/svn代码托管来实现配置的集中管理。实现配置中心客户端获取远程的配置文件,并可以动态刷新,即时生效。
在这里插入图片描述

5.1、开发configServer

  1. 新建springboot项目,引入configserver、consul、健康检查依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    </dependencies>
    
  2. 配置属性配置文件,指定git的用户名、密码、以及仓库地址

# 应用名称
spring.application.name=configserver
# 应用服务 WEB 访问端口
server.port=8989

spring.cloud.consul.port=8500

spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=
spring.cloud.config.server.git.uri=

3、登录github或者gitee,新建仓库,添加两个文件commodity.properties 、commodity-dev.properties
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

5、启动项目,访问验证
在这里插入图片描述

6、当然也可指定分支和本地仓库位置

# 注意本地仓库位置一定要是一个空目录,因为首次运行时会清空该目录的所有内容
spring.cloud.config.server.git.basedir=/localdata
spring.cloud.config.server.git.default-label=master   #指定使用远程仓库中那个分支中内容

5.2、开发configClient

  1. 新建springboot项目,configClient即为一个一个的微服务,所以引入微服务的相关依赖,如consul、hystrix等

    另外还需引入configclient依赖

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
    </dependency>
    
  2. 由于我们应该在项目启动时先等待拉取远程配置,拉取远程配置成功之后再根据远程配置信息启动即可,为了完成上述要求springboot官方提供了一种解决方案,就是在使用统一配置中心时应该将微服务的配置文件名修改为bootstrap.(properties|yml),bootstrap.properties作为配置启动项目时,会优先拉取远程配置,远程配置拉取成功之后根据远程配置启动当前应用。

    所以修改application的文件名为bootstrap。并添加如下内容

    # 应用名称
    spring.application.name=commodity
    
    #配置文件名
    spring.cloud.config.name=commodity
    #配置的策略pro-生产 test-测试 dev-开发
    spring.cloud.config.profile=pro
    #指定分支
    spring.cloud.config.label=master
    #开启配置信息发现
    spring.cloud.config.discovery.enabled=true
    #指定配置中心的service-id
    spring.cloud.config.discovery.service-id=configserver
    
  3. 更新远程配置文件。注意commodity.properties用来存放公共配置,dev用来存放开发配置。pro用来存放生产配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 新增控制器方法

    package com.laodai.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.HashMap;
    import java.util.Map;
    
    /**
     * @作者 老代
     * @微信 laodai6_6
     * @时间 2021/3/13 23:45
     * @Version 1.0
     */
    @RestController
    @RefreshScope//开启刷新
    public class CommodityController {
    
    
    
        @Value("${server.port}")
        private int port;
        
        @Value("${name}")
        private String name;
    
        @GetMapping("/commodity/test")
        public Map<String,Object> test(){
            Map<String,Object> map = new HashMap<>();
            map.put("status",200);
            map.put("msg","测试从远程仓库获取配置信息");
            map.put("name",name);
            map.put("port",port);
            return map;
        }
    }
    
  5. 启动项目,通过控制台可以看到当前服务的端口号为8888,正式生产配置的端口。访问接口可以接受到信息
    在这里插入图片描述
    在这里插入图片描述

    5.3、手动刷新配置

    实际中,无论是生产环境还是开发环境我们都会经常修改配置文件,如果每次修改配置后都需要重新启动微服务集群,那么运维成本是巨大的,所以我们需要设置为更改了远程配置文件就可刷新

    1. 修改bootstrap.properties文件,添加这个配置

      management.endpoints.web.exposure.include=*            #开启所有web端点暴露
      
    2. 在需要刷新参数的代码类上添加 @RefreshScope注解。注意如果在业务方法中也引用了配置文件中的内容也需要添加注解才可刷新

    3. 启动项目,访问测试
      在这里插入图片描述在这里插入图片描述

    4. 手动调用刷新配置接口 curl -X POST http://localhost:8888/actuator/refresh。访问测试
      在这里插入图片描述
      在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值