1. Spring Cloud Config简介
Spring Cloud Config可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分。
服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。
客户端可以通过配置中心来获取配置信息,在启动时加载配置。Spring Cloud Config默认采用Git来存储配置信息,所以天然就支持配置信息的版本管理,并且可以使用Git客户端来方便地管理和访问配置信息。
2. 准备工作
因为config server是需要到git上拉取配置文件的,所以还需要在远程的git上新建一个存放配置文件的仓库,
如下仓库中存放客户端配置文件:
| 1 | application-beta.yml | 
3. 配置中心服务端搭建
- 搭建服务端配置中心(config-server),在pom.xml文件中添加依赖:
| 1 | <!--配置服务--> | 
- 在服务端编辑application.yml配置文件内容如下:
| 1 | server: | 
- 在启动类上,加上@EnableConfigServer注解,声明这是一个config-server。代码如下:
| 1 | /** | 
- 启动项目,访问http://localhost:8009/master/application-dev.yml,可以看到能够访问到客户端配置文件的内容。
4. 客户端获取配置
- 在pom.xml文件中添加依赖:
| 1 | <dependency> | 
- 编辑bootstrap.yml配置文件内容如下:
| 1 | server: | 
启动服务,配置中心读取的配置生效。
5. 获取配置信息的基本规则
| 1 | # 获取配置信息 | 
- name: 文件名,一般以服务名(- spring.application.name)来命名,如果配置了- spring.cloud.config.name,则为该名称.
- profiles: 一般作为环境标识,对应配置文件中的- spring.cloud.config.profile
- lable: 分支(- branch),指定访问某分支下的配置文件,对应配置文件中的- spring.cloud.config.label,默认值是在服务器上设置的(对于基于- git的服务器,通常是“- master”)
5.1 Maven的Profile管理
Maven提供了Profile切换功能(多环境dev,beta,prod), 如下pom.xml:
| 1 | <profiles> | 
配置文件bootstrap.yml:
| 1 | spring: | 
SpringBoot一把情况下会遵从你选的环境将@activatedProperties@替换掉。
但SpringCloud比较特殊,使用配置中心后客户端不会再使用application.yml,而是使用bootstrap.yml。但是Maven不认bootstrap.yml里的@activatedProperties@。
解决:在pom.xml的build标签里添加如下代码,用于过滤yml文件:
| 1 | <build> | 
5.2 将不同服务的配置文件放到以服务名命名的目录下
因为config server默认情况下只会搜索git仓库根路径下的配置文件,所以我们还需要加上一个配置项:search-paths,
该配置项用于指定config server搜索哪些路径下的配置文件,需要注意的是这个路径是相对于git仓库的,并非是项目的路径。
| 1 | spring: | 
原文链接: http://chaooo.github.io/2021/11/09/spring-cloud-config.html
版权声明: 转载请注明出处.