欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

spring cloud config详解

程序员文章站 2022-07-14 22:29:47
...

spring cloud config详解

接着上一篇spring cloud eureka 这篇将spring cloud config,spirng cloud config 主要是讲spring cloud 所的微服务的配置文件统一交由 spring cloud config 管理. 开始上代码.

创建spirng cloud config server项目

————————————————spirng cloud config server————————————————————

一、pom.xml

<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.sky</groupId>
        <artifactId>spring-cloud-01</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.sky</groupId>
    <artifactId>service-config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>service-config-server</name>

    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

</project>


我的 parent 节点不是spring boot项目, 是自己创建的项目, pom参考我的第一篇文章《IDEA搭建spring cloud一步一步详解》。

二、application.yml

#这里有个大坑,如果端口不是8888, 其他微服务是无法获取到配置文件. spring config 默认从8888 端口读取配置文件,修改的地方我还么找到. 谁知道怎么改
#告诉我下下.
server:
  port: 8888

#将spring cloud config server 注册到 eureka注册中心.
eureka:
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:9001/eureka/

#我这里配置的是 码云的git仓库.
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://gitee.com/sky061015/spring-config
          search-paths: config-repo
          username: 
          password: 

重点是 git仓库的配置,如果是公开的仓库后者支持秘钥,这里可以不配置用户名和密码,spirng cloud config支持 git、svn、本地文件。 我这以git为例子。

三、git仓库

spring cloud config详解
我这里git项目名称是:spring-config,配置文件路径是:config-repo,里面三个微服务的yml配置文件,yml配置文件的命名规则,大家自己百度下, 支持按照部署环境命名:
{application}-{profile}.properties profile部署环境标识
我这里默认没有区分开发、部署、测试环境,如果区分的话一般应该有一个服务有三给配置文件:
application-dev.yml 开发环境配置文件
application-test.yml 测试环境配置文件
application-res.yml 生产部署环境配置文件
在spring cloud client项目中讲,怎么读取对应分支的对应环境的配置文件。

四、springbootapplication.java启动类

package com.sky;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@EnableConfigServer
@EnableEurekaClient
@SpringBootApplication
public class ServiceConfigServerApplication {

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

}

@EnableConfigServer 标注该项目是一个spring cloud config server 项目,如果是spirng cloud config server,则必须标注该注解。
@EnableEurekaClient标注改项目是一个eureka客户端服务,将注册到eureka服务中心。
启动项目,然后通过postman来测试,输入地址:http://localhost:8888/config-client.yml,出现如下结果:
spring cloud config详解
git仓库文件的config-client.yml的内容和请求返回的结果是一直的,到这里spring cloud config server搭建成功。
————————————————spirng cloud config server————————————————————

下面搭建spirng cloud config client项目从 config server读取配置文件信息。

配置spirng cloud config client信息,也可以不创建,修改原来的 spring boot项目, 让该项目支持从 config server读取配置文件信息。

一、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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.sky</groupId>
        <artifactId>spring-cloud-01</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath/>
    </parent>

    <groupId>com.sky</groupId>
    <artifactId>eureka-client-01</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>
    <name>eureka-client-01</name>
    <description>eureka-client-01</description>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
            <version>2.1.3.RELEASE</version>
        </dependency>
    </dependencies>

</project>

parent节点还是自己创建的项目,这里只配置了,eureka客户端的依赖和config客户端的依赖。

二、bootstarp.yml

spring:
  cloud:
    config:
      name: eureka-client-01
      label: master
      uri: http://localhost:8888

这里配置非常简单,只配置了spirng cloud config server 的服务信息。url对应的是刚才配置的sping cloud config server的地址。
spring.cloud.config.name: 对应的是git仓库里面的yml文件的文件名称,如果有profile,就是:eureka-client-01-dev

三、springbootapplication.java启动类

package com.sky;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class ServiceClient01Application {

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

}

这里没什么特别注意的, @EnableEurekaClient这里也可以加, 我这里是只是将该项目注册到eureka服务中心。
四、启动服务
出现以下日志,则说明该服务从spring cloud config server读取配置文件。
spring cloud config详解
spring cloud config详解
端口信息对应git仓库的 eureka-client-01的配置信息,说明该项目成功从spring cloud config server读取配置信息成功。
大家也可以通过 ${value}来验证。
最后附上项目启动截图:
spring cloud config详解
项目源码地址