接上篇《31.Spring Cloud Config简介》 Spring Cloud版本为Finchley.SR2版
上一篇我们了解了Spring Cloud的统一配置管理(Spring Cloud Config)的基础知识和组件介绍,本篇我们就来编写Spring Cloud Config的服务端。
本部分官方文档:https://cloud.spring.io/spring-cloud-static/Finchley.SR4/single/spring-cloud.html#_spring_cloud_config_server 注:好像Finchley.SR2的文档已经挂了,最新的是Finchley.SR4的文档。
我们来回顾一下上一篇Spring Cloud Config的架构图:
通过该图我们知道,Config Client客户端都通过Config Server服务端获取相应环境(dev开发、stage预发布、prod生产)的配置,然后Config Server再从后端存储中(上图为Git)拉取配置参数、属性。
这里我们就来动手编写一个Config Server服务端。
一、新建Config Server服务工程
在工作空间中新建一个名为“microserver-config-server”的Maven工程:
然后在POM文件中引入Spring Cloud的父工程、config-server的依赖:
注意,这里为了便于版本统一管理,该工程的parent父工程和我们User、Movie工程一样,均依赖于microserver-spring-cloud工程(此父工程统一引入了spring-cloud-dependencies的Finchley.SR2版,这个在前面的章节已经讲过)。
父工程pom.xml的modules中别忘记加入这个新工程(microserver-config-server):
然后我们新建启动类,在启动类中,添加“@EnableConfigServer”注解,以开启Zuul的代理功能:
然后在resource文件夹下创建application.yml,配置一下端口,以及拉取配置的后端存储的uri路径:
这里的路径一般是远端数据仓库的地址,我们常用版本管理仓库来实现,这里我们就创建一个码云的gitee仓库来作为配置的后端存储。
二、配置远端gitee仓库
这里我们登录码云的网站,注册一个账号,然后进行登录:
登录成功后,点击个人头像左侧的“+”号,选择“新建仓库”:
然后进入仓库创建页面,填写必须字段,进行仓库的创建:
然后我们的测试仓库就创建成功了:
然后点击“克隆/下载”,将git地址复制下来:
这个就是我们仓库的git地址:
https://gitee.com/jackzhucoder/Spring-Cloud-Config-Test.git然后我们在本地硬盘中创建一个名为“gitee”的文件夹,作为本地仓库,然后下载Git工具(访问:https://git-scm.com/downloads下载即可, ),下载完毕后,打开cmd,输入git --version,如果出现版本号,则证明安装成功:
右键点击生成本地文件夹,选择“git GUI here”使用git的图形化界面:
然后选择上面的克隆已有仓库的选项,然后填写前面我们复制的仓库地址,目标文件夹为D:/gitee/Spring-Cloud-Config-Test:
点击“Clone”后,远程仓库的文件就被拉进来了:
然后我们在D:/gitee/Spring-Cloud-Config-Test下加入dev开发、stage预发布、prod生产的各个application.yml配置文件:
里面的内容分别为:“type: dev”、“type: stage”和“type: prod”。然后回到gui,点击“Rescan”刷新仓库,检测出有变动的文件:
然后选择stage预提交:
然后填写提交信息commit Message,并点击commit提交本地仓库:
然后点击push,将本地仓库信息提交到远程仓库,并按提示输入相关的账号密码:
然后可以看到代码push成功了:
提交成功之后,我们刷新码云的页面,可以看到刚刚的配置文件提交成功:
三、Config Server获取配置信息
此时回到我们的Config Server服务上来,将刚刚配置文件的uri修改为我们新建的gitee仓库:
注:原地址后面的“.git”可以不要。
然后我们直接启动Config Server微服务,来准备访问我们的远端配置。
使用Config Server微服务访问远端配置文件,可以直接通过RESTful风格的URL形式访问,类似为“http://127.0.0.1:8090/+配置”这种形式,有关配置的映射规则,Spring Cloud提供了以下几种方式:
上面的{label}为标签 ,{application}为应用标识,{profile}为版本类型。
那么我们刚刚的其中一个application-dev.yml文件,就可以使用下面的路径访问:
http://127.0.0.1:8090/application-dev.yml 访问结果:
另外两个文件信息:
如果有多个分支,可以在文件前面加载分支的标签,如我们的文件在master分支上,就是:
http://127.0.0.1:8090/master/application-prod.yml 不加分支默认访问master分支。如果我们更改{application},如果不存在的话,默认还是会以“application”的配置:
当然,如果我们输入一个不存在的配置,默认是什么都没有的(一个是json信息,一个会显示无默认配置文件,仅为“{}”):
我们可以在文件夹下放置一个名为application.yml的配置文件(提交至远程仓库),作为默认版本的配置文件:
文件内容为“type:default”。此时我们再访问不存在的版本配置,就会指向默认配置文件:
以上就是Config Server的搭建和仓库的连接,以及访问配置的方式介绍。下一篇我们继续讲解如何搭建Config Server客户端,以及客户端如何读取Config Server的配置。
参考:《51CTO学院Spring Cloud高级视频》