说明
- 项目运行的前提条件:服务注册中心已经启动。
- 本项目的服务注册与发现是基于 Spring Cloud Consul 实现。具体内容博主写在另一篇博客:
- 本博客是 Spring Cloud 微服务化(精简完整版)的一部分。
配置中心简介
- Consul 提供了一个
Key/Value
仓库来存储配置和其他元数据。 - 在特定的
bootstrap
时期配置会被加载到Spring 环境
中。配置默认存储在/config 目录
。根据应用名和激活的配置文件,模拟Spring Cloud Config
解析属性的顺序创建多个PropertySource
实例。例如,一个应用名为 “testApp” ,启用profile为 dev 的应用,以下配置源会被创建:config/testApp,dev/ config/testApp/ config/application,dev/ config/application/
- 偏特定的配置在上面,偏通用的配置在底下。在
config/application/
目录下的配置适用于所有使用 consul 管理配置的应用 。在config/testApp
目录下的配置仅适用于服务名为testApp
的服务实例。
项目构建
- 博主另一篇博客中,构建了一个基础的微服务项目: awesome-user-server。本博客在这个项目的基础上,引入配置中心。
- 添加了一个 bootstrap.yml 配置文件
依赖
- 要启动 Spring Cloud Consul 配置中心服务,只要用引入
spring-cloud-starter-consul-config
即可。 - 项目(awesome-user-server)中实际引入的是:
spring-cloud-starter-consul-all
,它包含了 :- 因此,不需要做任何改动
配置
- 可以通过以下属性进行自定义Consul 配置。
bootstrap.yml
spring: cloud: consul: config: enabled: true prefix: configuration defaultContext: apps profileSeparator: '::'
enabled
设置这个属性为 false 将会关闭 Consul 配置prefix
为配置信息设置基础目录defaultContext
设置适用于所有应用的目录profileSeparator
设置分隔符的值,用于分隔属性源配置文件名(profiles)
- 博主当前的配置:
bootstrap.yml
spring: cloud: consul: config: enabled: true prefix: config defaultContext: awesome-user-server profileSeparator: ',' data-key: configuration format: YAML
- 这个配置的作用:
- Consul 配置中心使用 YAML 格式的配置文件
- 本项目会读取 Consul 配置中心
Key/Value
仓库中 key 为config/awesome-user-server/configuration
对应的 Value 值。- 这个 Value 值是一个 YAML 格式的配置文件的内容。它用于覆盖默认的配置。
- 例如,项目中的
application.yml
的配置项key1 = value1
。假设此时Value 值(它是一个YAML格式的文档内容)
也包含key1
配置项,而且key1 = value2
。那么,项目实际读取配置项key1
时,取到的值是value2
。
- 例如,项目中的
- 这个 Value 值是一个 YAML 格式的配置文件的内容。它用于覆盖默认的配置。
测试
引用默认配置
- 默认情况下,使用的数据库为 andy_test。
- 请求获取用户信息接口:
通过配置中心修改默认配置
- 通过修改
config/awesome-user-server/configuration
的内容,覆盖默认配置: - 这里,修改连接的数据库,把
andy_test
修改为andy_test_v0
:- 再次访问获取用户信息接口,发现信息内容已经发生了变化:
版权声明:本文为liqing0013原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。