原创作者:田超凡(程序员田宝宝)

版权所有,引用请注明原作者,严禁复制转载

Part 1 理论部分

1 什么是SpringCloud Config?

当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使新的配置文件生效,SpringCloud Config可以实现对微服务系统中所有服务的配置文件进行统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取最新的配置。

Part 2 实践部分

Config原理图

Git环境搭建

使用码云环境搭建git服务器端 

服务端详解

项目名称:springboot2.0-config_server

Maven依赖信息

     <parent>

           <groupId>org.springframework.boot</groupId>

           <artifactId>spring-boot-starter-parent</artifactId>

           <version>2.0.1.RELEASE</version>

     </parent>

     <!-- 管理依赖 -->

     <dependencyManagement>

           <dependencies>

                <dependency>

                     <groupId>org.springframework.cloud</groupId>

                     <artifactId>spring-cloud-dependencies</artifactId>

                     <version>Finchley.M7</version>

                     <type>pom</type>

                     <scope>import</scope>

                </dependency>

           </dependencies>

     </dependencyManagement>

     <dependencies>

           <!--spring-cloud 整合 config-server -->

           <dependency>

                <groupId>org.springframework.cloud</groupId>

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

           </dependency>

           <!-- SpringBoot整合eureka客户端 -->

           <dependency>

                <groupId>org.springframework.cloud</groupId>

                <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

           </dependency>

     </dependencies>

     <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->

     <repositories>

           <repository>

                <id>spring-milestones</id>

                <name>Spring Milestones</name>

                <url>https://repo.spring.io/libs-milestone</url>

                <snapshots>

                     <enabled>false</enabled>

                </snapshots>

           </repository>

     </repositories>

application.yml配置

###服务注册到eureka地址

eureka:

  client:

    service-url:

           defaultZone: http://localhost:8100/eureka

spring:

  application:

    ####注册中心应用名称

    name: config-server

  cloud:

    config:

      server:

        git:

          ###git环境地址

          uri: https://gitee.com/ittcf/config.git

          ####搜索目录

          search-paths:

            - config 

      ####读取分支     

      label: master

####端口号     

server:

  port: 8888

项目启动

@EnableConfigServer

@SpringBootApplication

public class ConfigServerApplication {

    public static void main(String[] args) {

        SpringApplication.run(ConfigServerApplication.class, args);

    }

}

@EnableConfigServer 开启分布式配置中心服务器端

读取配置文件信息 http://127.0.0.1:8888/config-client-dev.properties

客户端详解

项目名称:springboot2.0-config_client

Maven依赖信息

<parent>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-parent</artifactId>

        <version>2.0.1.RELEASE</version>

    </parent>

    <!-- 管理依赖 -->

    <dependencyManagement>

        <dependencies>

             <dependency>

                 <groupId>org.springframework.cloud</groupId>

                 <artifactId>spring-cloud-dependencies</artifactId>

                 <version>Finchley.M7</version>

                 <type>pom</type>

                 <scope>import</scope>

             </dependency>

        </dependencies>

    </dependencyManagement>

    <dependencies>

        <!-- SpringBoot整合Web组件 -->

        <dependency>

             <groupId>org.springframework.boot</groupId>

             <artifactId>spring-boot-starter-web</artifactId>

        </dependency>

        <dependency>

             <groupId>org.springframework.cloud</groupId>

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

        </dependency>

        <!-- SpringBoot整合eureka客户端 -->

        <dependency>

             <groupId>org.springframework.cloud</groupId>

             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

        </dependency>

    </dependencies>

    <!-- 注意: 这里必须要添加, 否者各种依赖有问题 -->

    <repositories>

        <repository>

             <id>spring-milestones</id>

             <name>Spring Milestones</name>

             <url>https://repo.spring.io/libs-milestone</url>

             <snapshots>

                 <enabled>false</enabled>

             </snapshots>

        </repository>

    </repositories>

bootstrap.yml

spring:

  application:

    ####注册中心应用名称

    name:  config-client

  cloud:

    config:

    ####读取后缀

      profile: dev

      ####读取config-server注册地址

      discovery:

        service-id: config-server

        enabled: true

#####    eureka服务注册地址   

eureka:

  client:

    service-url:

           defaultZone: http://localhost:8100/eureka   

server:

  port: 8882

读取配置文件

@RestController

public class IndexController {

      @Value("${name}")

      private String name;

      @RequestMapping("/name")

      private String name() {

            return name;

      }

}

本文部分素材转载自蚂蚁课堂

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐