Spring Cloud 之Config详解

大家好,我是升仔

  1. 在微服务架构中,统一的配置管理是维护大规模分布式系统的关键。Spring Cloud Config为微服务提供集中化的外部配置支持,它可以与各种源代码管理系统集成,如Git、SVN等。本文将详细介绍如何搭建配置服务器、管理客户端配置和动态刷新配置。

    搭建配置服务器

    基本原理

    Spring Cloud Config Server作为中心化的配置服务器,它从源代码管理系统中读取配置文件,然后提供给客户端应用。原理图如下:
    在这里插入图片描述

    步骤和代码

    1. 添加依赖:在项目的pom.xml文件中添加Config Server的依赖。

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-config-server</artifactId>
      </dependency>
      
    2. 启用Config Server:在应用的主类上添加@EnableConfigServer注解。

      @SpringBootApplication
      @EnableConfigServer
      public class ConfigServerApplication {
          public static void main(String[] args) {
              SpringApplication.run(ConfigServerApplication.class, args);
          }
      }
      
    3. 配置文件:在application.yml中配置Git仓库地址。

      server:
        port: 8888
      
      spring:
        cloud:
          config:
            server:
              git:
                uri: [Git仓库地址]
                clone-on-start: true
      

    客户端配置管理

    配置客户端

    1. 添加依赖:在客户端应用的pom.xml中添加Config Client的依赖。

      <dependency>
          <groupId>org.springframework.cloud</groupId>
          <artifactId>spring-cloud-starter-config</artifactId>
      </dependency>
      
    2. 配置bootstrap.yml:客户端应用需要在bootstrap.yml文件中指定Config Server的地址。

      spring:
        application:
          name: client-app
        cloud:
          config:
            uri: http://localhost:8888
      

    读取配置

    在客户端应用中,可以直接通过@Value注解读取配置:

    @RestController
    public class ConfigClientController {
    
        @Value("${some.config}")
        private String someConfig;
    
        @GetMapping("/getConfig")
        public String getConfig() {
            return someConfig;
        }
    }
    

    动态刷新配置

    Spring Cloud Config支持在不重启服务的情况下刷新配置。

    1. 添加依赖:在客户端应用中添加spring-boot-starter-actuator依赖。

      <dependency>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-actuator</artifactId>
      </dependency>
      
    2. 使用@RefreshScope:在需要动态刷新的Bean上添加@RefreshScope注解。

      @RestController
      @RefreshScope
      public class ConfigClientController {
          // ...
      }
      
    3. 触发刷新:通过POST请求/actuator/refresh端点来刷新配置。

      curl -X POST http://localhost:8080/actuator/refresh
      
最后说一句(求关注,求赞,别白嫖)

最近无意间获得一份阿里大佬写的刷题笔记,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的,7701页的BAT大佬写的刷题笔记,让我offer拿到手软

本文已收录于我的技术网站,next-java.com, 有大厂完整面经,工作技术等经验分享

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注非常感激

相关推荐

  1. SpringCloudConfig配置中心

    2024-01-29 05:08:01       17 阅读
  2. GSAP教程gsap.config与gsap.defaults详解

    2024-01-29 05:08:01       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-29 05:08:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-29 05:08:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-29 05:08:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-29 05:08:01       20 阅读

热门阅读

  1. 典型相关分析

    2024-01-29 05:08:01       32 阅读
  2. leetcode670最大交换

    2024-01-29 05:08:01       33 阅读
  3. 驾照考试-科目二

    2024-01-29 05:08:01       34 阅读
  4. MySQL 导出数据

    2024-01-29 05:08:01       32 阅读