博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Cloud构建统一配置中心
阅读量:6159 次
发布时间:2019-06-21

本文共 4587 字,大约阅读时间需要 15 分钟。

Spring Boot有一个非常重要的改变就是简化了配置,使用application.properties文件定义了很多默认配置。愿意了解源码的朋友直接求求交流分享技术 一零三八七七四六二六

但是配置文件分开管理来还是比较麻烦的,而且环境越多配置约容易出问题。Spring Cloud提供了一种统一配置的方案:Spring Cloud Config Server。

Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分。

Server端配置

Spring Cloud Config Server本质上也是一个Spring Boot的web项目,只需要添加对应的parent,然后加入相关的依赖就可以启动这个工程了。

Maven的pom.xml中需要添加以下内容:

org.springframework.cloud
spring-cloud-starter-parent
Brixton.BUILD-SNAPSHOT
org.springframework.cloud
spring-cloud-config-server
org.springframework.cloud
spring-cloud-starter-eureka
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
spring-snapshots
Spring Snapshots
http://repo.spring.io/libs-snapshot-local
true
spring-milestones
Spring Milestones
http://repo.spring.io/libs-milestone-local
false
spring-releases
Spring Releases
http://repo.spring.io/libs-release-local
false
spring-snapshots
Spring Snapshots
http://repo.spring.io/libs-snapshot-local
true
spring-milestones
Spring Milestones
http://repo.spring.io/libs-milestone-local
false
config server的resource目录下的application.properties:server.port=8888spring.cloud.config.server.git.uri=file://Users/whthomas/config-repospring.application.name=configserverspring.cloud.config.uri=http://localhost:8888复制代码

启动项目的代码:

@SpringBootApplication@EnableConfigServerpublic class DemoApplication {    public static void main(String[] args) {        SpringApplication.run(DemoApplication.class, args);    }}复制代码

其实和一般的SpringBoot项目启动没有什么区别,只是多了一个@EnableConfigServer注解。 配置环境仓库( Environment Repository ) 上面的application.properties中有一个

spring.cloud.config.server.git.uri=file://Users/whthomas/config-repo复制代码

这个配置指的项目配置仓库的位置,这个位置可以是:git文件夹、svn文件夹或者github项目位置,任何能访问到文件的地方。

环境仓库(例子中的文件夹中)中提供环境配置对象配资源给Config Server发布给各个consumer使用。

环境资源的命名规则由以下的三个参数确定:

{application}映射到Config客户端的spring.application.name属性

{profile}映射到Config客户端的spring.profiles.active属性,可以用来区分环境,比如dev,test,produce等等

{label}映射到Git服务器的commit id,分支名称或者tag,默认值为master

仓库中的配置文件会被转换成web接口,访问可以参照以下的规则:

/{application}/{profile}[/{label}]/{application}-{profile}.yml/{label}/{application}-{profile}.yml/{application}-{profile}.properties/{label}/{application}-{profile}.properties复制代码

举个栗子: 我在配置中心的目录下放置文件:

cloud-config-rd.propertiescloud-config-dev.propertiescloud-config-test.propertiescloud-config-test.properties复制代码

以cloud-config-rd.properties为例子,它的application是cloud-config,profile是rd.client会根据填写的参数来选择读取对应的配置。

那么接下去来看client端的处理。

Client端配置

创建一个普通的SpringBoot项目,pom.xml中加入Spring Cloud的配置。

org.springframework.cloud
spring-cloud-dependencies
Brixton.RC2
pom
import
复制代码

pom.xml中的dependencies节点下添加

org.springframework.cloud
spring-cloud-starter-config
复制代码

resource目录下的application.properties添加这样几个配置: 配置中心服务的地址 spring.cloud.config.uri=localhost:8888 要读取的配置文件application属性 spring.cloud.config.name=cloud-config 要读取的配置文件profile属性,默认是dev spring.cloud.config.profile=${config.profile:dev}

以上的几个配置也可以在命令行启动jar时填写。 以上配置完成之后,在远端配置中心的对应的配置就会加载到项目中,和本地使用application.properties配置中添加配置是几乎一样的效果,使用@Value注解的配置也可以顺利读取到对应的配置。

转载于:https://juejin.im/post/5c661844518825626037cefe

你可能感兴趣的文章
[转]VC预处理指令与宏定义的妙用
查看>>
MySql操作
查看>>
python 解析 XML文件
查看>>
MySQL 文件导入出错
查看>>
java相关
查看>>
由一个异常开始思考springmvc参数解析
查看>>
向上扩展型SSD 将可满足向外扩展需求
查看>>
虚机不能启动的特例思考
查看>>
SQL Server编程系列(1):SMO介绍
查看>>
在VMware网络测试“专用VLAN”功能
查看>>
使用Formik轻松开发更高质量的React表单(三)<Formik />解析
查看>>
也问腾讯:你把用户放在什么位置?
查看>>
CSS Sprites 样式生成工具(bg2css)
查看>>
[转]如何重构代码--重构计划
查看>>
类中如何对list泛型做访问器??
查看>>
C++解析XML--使用CMarkup类解析XML
查看>>
P2P应用层组播
查看>>
Sharepoint学习笔记—修改SharePoint的Timeouts (Execution Timeout)
查看>>
CSS引入的方式有哪些? link和@import的区别?
查看>>
Redis 介绍2——常见基本类型
查看>>