前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >springCloud - 第7篇 - 配置文件管理中心 ( SpringCloud Config )

springCloud - 第7篇 - 配置文件管理中心 ( SpringCloud Config )

作者头像
微风-- 轻许--
发布2019-08-14 11:25:54
1.1K0
发布2019-08-14 11:25:54
举报
文章被收录于专栏:java 微风

一、简介

分布式的系统往往有多个服务,会有不同的配置文件。

不同环境配置文件内容也各不相同: 开发环境、测试环境、生产环境。

为了方便管理数目众多的配置文件,springcloud 有对应的配置文件管理:spring cloud config 。

在此组件中主要有 2 种 角色:config server 配置文件管理中心 、

config client 从 config server 中读取真正需要的配置信息 。

配置文件支持放在本地,也支持放在远程 Git 仓库中 。

二、重用此系列工程的父 pom 工程 springcloud-base。

在其 pom 中加上依赖:

代码语言:javascript
复制
        <!--配置文件管理-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
        </dependency>

新建文件夹 config , 并设置相应配置内容:

config-client-pro.properties :

代码语言:javascript
复制
version = pro -1.1.1.11- FZW -1.1.1

config-client-test.properties :

代码语言:javascript
复制
version =  test-2.2.2.22

config-client-dev.properties :

代码语言:javascript
复制
version = dev-0.0.0.DEV-0.0.0

三、 新建 config-server 工程

1. file - new - module

2. spring Initializr - module SDK 选择自己的 JDK ,其余的可以不用填写,next。

3. 填写工程相关信息:包名、工程名等,next。

4. spring cloud config- 勾选 config server,next。

5. 工程名,代码存放位置等,finish 。

6. 工程结构如下:

7. pom.xml:

代码语言:javascript
复制
<?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>

    <groupId>com.config</groupId>
    <artifactId>config-server</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config-server</name>
    <description>配置文件管理 server</description>

    <parent>
        <groupId>com.base</groupId>
        <artifactId>base-config</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <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>
    </dependencies>

</project>

8. 在工程启动类上加注解:@EnableConfigServer ,开启配置文件管理服务功能 。

代码语言:javascript
复制
package com.config.configserver;


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

@SpringBootApplication

// 配置文件管理
@EnableConfigServer
public class ConfigServerApplication {

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

}

9. 配置文件中设置:

读取的是 springcloud-base工程中新增的 config 文件夹下的配置文件信息。

代码语言:javascript
复制
# 工程名
spring.application.name=config-server

# 端口
server.port=3333

# git仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/FJ_WoMenDeShiJie/springcloud-base.git

# 仓库路径
spring.cloud.config.server.git.searchPaths=config

# 仓库分支
spring.cloud.config.label=master

# git仓库用户名 ( 公开库-可不填 )
spring.cloud.config.server.git.username=

# git仓库密码 ( 公开库-可不填 )
spring.cloud.config.server.git.password=

10. 启动工程访问:http://localhost:3333/这里随便写/dev

表示访问远程仓库中的配置文件成功 。访问路径最后的 dev 在此测试时也可任意写。

四、 新建 config-client 工程

1. file - new - module

2. spring Initializr - module SDK 选择自己的 JDK ,其余的可以不用填写,next。

3. 填写工程相关信息:包名、工程名等,next。

4. spring cloud config- 勾选 config client,next。

5. 工程名,代码存放位置等,finish 。

6. 工程结构如下:

7. pom.xml:

代码语言:javascript
复制
<?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>

    <groupId>com.config</groupId>
    <artifactId>config-client</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>config-client</name>
    <description>配置文件管理 client</description>

    <parent>
        <groupId>com.base</groupId>
        <artifactId>base-config</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
    </dependencies>

</project>

8. 在工程启动类上加注解:@RestController , 书写 getVersion 方法,提供对外访问。

代码语言:javascript
复制
package com.config.configclient;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@SpringBootApplication
public class ConfigClientApplication {

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

    @Value("${version}")
    String version;

    @RequestMapping(value = "/getVersion")
    public String getVersion() {
        return version;
    }

    /**
     * 增加此方法用以解决报错:Could not resolve placeholder 'version' in value "${version}"
     * @return
     */
    @Bean
    public static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {
        PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();
        c.setIgnoreUnresolvablePlaceholders(true);
        return c;
    }

}

9. 配置文件设置: 注意此配置文件的名字是: bootstrap.properties 。

叫这个名字的原因:官方指定优先读取此文件,bootstrap 在 application 之前加载 。

代码语言:javascript
复制
# 项目名
spring.application.name=config-client

# 端口
server.port=4444

# 仓库分支
spring.cloud.config.label=master

# 读取文件:dev开发环境、test测试、pro生产
spring.cloud.config.profile=test

# 配置文件管理服务 config-server 地址
spring.cloud.config.uri=http://localhost:3333/

此时设置为读取 springcloud-base中的 配置文件 :config-client-test.properties

10. 启动工程访问:http://localhost:4444/getVersion

修改配置文件中访问的文件:

此时设置为读取 springcloud-base中的 配置文件 :config-client-dev.properties

重启工程访问:http://localhost:4444/getVersion

至此,config-server 从远程仓库读取配置文件成功。 config-client 通过 config-server 读取配置文件中的具体信息值也成功了。

在 config-client 配置文件中可通过修改 spring.cloud.config.profile 选项来设定读取不同的配置文件 。

-------------------------------------------------------------

下一篇:springCloud - 第8篇 - 配置文件管理中心 - 集群模式(负载匀衡)使用

源码见:https://gitee.com/FJ_WoMenDeShiJie/springcloud-base

https://gitee.com/FJ_WoMenDeShiJie/springcloud-config-server

https://gitee.com/FJ_WoMenDeShiJie/springcloud-config-client

-------------------------------------------------------------

PS:这个系列不定时更新,只是个人的学习分享,

内容全程参考书目:

《Spring Cloud 与 Docker 微服务架构空实战 》、

《Spring Cloud 微服务实战》、

《深入理解 Spring Cloud 与微服务构建》、

及大神博客:https://blog.csdn.net/forezp/article/details/70148833 ----------------------------------------------------------------

以下出自:https://blog.csdn.net/forezp/article/details/81041028

config-server 启动成功后,访问路径映射方式有以下几种:

代码语言:javascript
复制
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年07月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档