为什么需要配置中心?
    1、集中管理配置
    2、不同环境不同配置
    3、运行期间动态调整配置
    4、自动刷新
    Spring Cloud Config为分布式系统外部化配置提供了服务器端和客户端的支持,它包括
    Config Server和Config Client两部分。
    Config Server是一个可横向扩展、集中式的配置服务器,它用于集中管理应用程序各个环
    境下的配置,默认使用Git存储配置内容(也可使用Subversion、本地文件系统或Vault存储
    配置),因此可以方便的实现对配置的版本控制与内容审计。
    Config Client 是Config Server的客户端,用于操作存储在Config Server中的配置属性。
    image.png
    使用config实现配置中心服务端及客户端
    首先新增git配置仓库中心,地址为:https://gitee.com/aaronrao/spring-cloud-config-
    test
    在仓库里增加如下配置文件:
    image.png
    编写config配置中心服务端(使用git仓库存储)
    见示例:10-ms-config-server
    添加依赖,并在启动类上增加注解@EnableConfigServer
    image.png
    配置文件application.yml如下:
    image.png
    启动项目,访问地址:http://localhost:8080/ms-config/dev,得到整个项目的配置信息
    image.png
    访问地址:http://localhost:8080/ms-config-dev.properties,得到配置文件内容
    image.png
    配置文件映射规则如下:
    image.png
    以上端点都可以映射到{application}-{profile}.properties这个配置文件,{application}表
    示微服务的名称,{label}对应Git仓库的分支,默认是 master
    编写config配置中心客户端
    见示例:10-ms-config-client
    添加依赖
    image.png
    除了默认的application.yml配置文件,还需增加一个bootstrap.yml的配置文件,内容如
    下:
    image.png
    spring cloud有一个“引导上下文”的概念,这是主应用程序的父上下文。引导上下文负责
    从配置服务器加载配置属性,以及解密外部配置文件中的属性。和主应用程序加载
    application.(yml或 properties)中的属性不同,引导上下文加载(bootstrap.)中的属性。
    配置在 bootstrap.中的属性有更高的优先级,因此默认情况下它们不能被本地配置覆盖。
    启动项目,访问地址:http://localhost:8081/profile,得到config配置中心的配置文件内
    容如下
    image.png
    config配置中心服务端配置详解
    见示例:10-ms-config-server
    各种配置方法见项目配置文件,如下
    image.png
    配置信息的加解密安全处理
    前文是在 Git仓库中明文存储配置属性的。很多场景下,对于某些敏感的配置内容(例如数
    据库账号、密码等),应当加密存储。 config server为配置内容的加密与解密提供了支
    持。
    安装JCE
    config server的加解密功能依赖Java Cryptography Extension(
    JCE)
    Java8 JCE下载地址:
    http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-
    2133166.html
    下载JCE并解压,将其中的jar包覆盖到JDK/jre/lib/security目录中
    对称加密
    config server提供了加密与解密的接口,分别是/encrypt与/decrypt
    见示例:10-ms-config-server-encryption
    添加依赖
    image.png
    增加一个配置文件bootstrap.yml,配置对称加密的密钥
    image.png
    运行项目,验证加解密
    加密:curl http://localhost:8080/encrypt -d mySecret解密:curl http://localhost:8080/decrypt -d
    767552394ee539201214199d55b0a91b1485d959b667eeabad29a101b9c1c61e
    在git仓库增加配置文件ms-config-encryption-dev.yml,内容如下
    image.png
    访问地址:http://localhost:8080/ms-config-encryption-dev.yml,得到密钥原文
    image.png
    说明 config server能自动解密配置内容。一些场景下,想要让 config server直接返回密文
    本身,而并非解密后的内容,可设置
    *spring.cloud.config.server.encrypt.enabled=false
    ,这时可由 ConfigCIient自行解
    密。