探秘SpringCloud系列《第七篇章:创建Config配置军需处》

本文详细介绍如何使用SpringCloudConfig创建统一配置中心,包括构建配置中心、配置Git仓库及微服务如何获取配置信息。

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

欢迎来到SpringCloud的江湖,在本章中,我们将向大家传授如何创建SpringCloud的父子项目架构。
知识无止境,故事有好坏,文章纯属虚构,欢迎大家吐槽。
行走江湖,没点伎俩傍身怎么能行。本章牵扯到的技术以及工具如下:
Intellij Idea 2018.1
JDK 8
MAVEN 3.2.2
SpringBoot 1.5.13.RELEASE
Spring-Cloud Edgware.SR3
Spring Cloud Config声明式调用

随着微服务的不断增多,微服务的管理便成了难题,那么怎么解决这个问题,于是便有了Spring Cloud Config.

一、Spring Cloud Config 是什么

Spring Cloud Config 是用来为分布式系统中的基础设施和微服务应用提供的集中化的外部配置支持。分为服务端和客户端两个部分。其中服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息。实现了对服务器端和客户端中环境变量和属性配置的抽象映射。

说直白一点:就是把springboot项目中的application.yml配置文件抽取出来,放在一起统一管理。

可以将配置信息放在git,svn或本地化的文件系统。

二、构建Spring Cloud Config配置中心

  • 创建一个springboot工程,命名为cloud-config,并在pom.xml文件引入下面依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>cloud-eureka</artifactId>
        <groupId>com.maple</groupId>
        <version>1.0.0</version>
    </parent>
    <artifactId>cloud-config</artifactId>
    <version>1.0.0</version>
    <name>cloud-config</name>
    <description>Demo project for Spring Boot</description>
    <packaging>jar</packaging>

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

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>
  • 在springboot项目程序主类添加@EnableConfigServer注解,开启Spring Cloud Config的服务功能。
@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class CloudConfigApplication {

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

}
  • 在application.yml中添加配置服务的基本信息以及Git仓库的相关信息。
server:
  port: 6666

#注册服务到eureka-server
eureka:
  client:
    service-url:
      defaultZone: http://127.0.0.1:8761/eureka/

spring:
  application:
    name: cloud-config
  cloud:
    config:
      server:
        git:
          uri: https://github.com/hack-feng/Spring-Cloud-Edgware.git
          search-paths: /config
          # 这里用的是公有库,无需密码,如果是私有库,需设置密码
          username:
          password:
      label: master

Git的配置分别对应以下内容

  • spring.cloud.config.profile:对应的是开发版本,对应配置规则中的profile,见下面介绍
  • spring.cloud.config.label:Git代码的分支信息,默认是master
  • spring.cloud.config.server.uri:配置Git仓库位置
  • spring.cloud.config.server.search-paths:配置Git仓库路径下的相对搜索位置,可以配置多个
  • spring.cloud.config.server.username:配置Git仓库用户名,共有库可以不设置
  • spring.cloud.config.server.password:配置Git仓库密码

配置规则详解

在Git仓库中https://github.com/hack-feng/Spring-Cloud-Edgware/config下创建以下配置文件

  • application-dev.yml
 logging:
  level:
    org.springframework.security: INFO

eureka:
  client:
    serviceUrl:
      defaultZone: http://127.0.0.1:8761/eureka/

  • pay-service-dev.yml
server:
  port: 8004

name: zhangsan

内容对应:

注意使用yml格式 :后面跟一个空格
端点与配置文件的映射规则如下:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

{application}表示微服务的名字,即:spring.application.name
{profile}表示开发版本,即:spring.cloud.config.profile
{label}表示Git仓库的分支,即:spring.cloud.config.label

  • 启动项目,访问:http://127.0.0.1:6666/pay-service/dev如下图
    在这里插入图片描述

  • 访问http://127.0.0.1:6666/pay-service-dev.yml得到
    在这里插入图片描述

由以上例子可见:application-dev.yml为父类,其他的yml都可以获得application-dev.yml里面的内容,因此,我们可以在application-dev.yml定义一些通用的东西。

如果application-dev.yml和pay-service-dev.yml均定义了同一个配置。子类的会覆盖掉父类的配置。

至此,已成功构建了Config Server,并通过构造URL方式,获取了Git仓库的配置信息。

三、编写config Client

上文已经构造了cloud-config,并使用Config Server端点获取到了配置信息。接下来讨论SpringCloud微服务如何获取配置信息。

  • 在cloud-service下,创建一个springBoot模块,命名为:pay-service ,pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.maple</groupId>
        <artifactId>cloud-service</artifactId>
        <version>1.0.0</version>
    </parent>
    <artifactId>pay-service</artifactId>
    <version>1.0.0</version>
    <name>pay-service</name>
    <description>Demo project for Spring Boot</description>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

在祖节点的pom.xml添加config的配置:

<!--添加config统一配置中心依赖-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  • springboot项目程序主类程序。
package com.maple.pay;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class PayServiceApplication {

    public static void main(String[] args) {
        SpringApplication.run(PayServiceApplication.class, args);
    }
}
  • 创建bootstarp.yml配置,指定congfig-server的位置,如下
spring:
  cloud:
    config:
      profile: dev
      uri: http://127.0.0.1:6666/
  application:
    name: pay-service
  • 创建测试ConfigTestController.java 内容如下
package com.maple.pay.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author ZhangFZ
 * @date 2020/2/7 10:50
 **/
@Scope
@RestController
public class TestConfigController {

    /**
     * 从配置文件中取出该值
     */
    @Value("${name}")
    private String name;

    @GetMapping("/test")
    private String test(){
        return "配置文件中获取到的内容为:" + name;
    }
}

启动项目,访问http://127.0.0.1:8004/test,得到以下结果
在这里插入图片描述

到这里spring Cloud Config基于Git的统一配置中心就搭建好了。

本章到此结束。后续文章会陆续更新,文档会同步在CSDN和GitHub保持同步更新。

CSDN:https://blog.csdn.net/qq_34988304/category_8820134.html

Github文档:https://github.com/hack-feng/Java-Notes/tree/master/src/note/SpringCloud

GitHub源码:https://github.com/hack-feng/Spring-Cloud-Edgware.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笑小枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值