菜鸡黑仔,记录学习SpringCloud随记 2019-04-03
SpringCloud-config: 配置中心 以及 客户端
1:配置中心
1.1 依赖是spring-cloud-config-server 而不是习惯用的各种start的依赖 spring-cloud-starter-config-server(错)
1.2 git仓库为私有时 yml配置文件需要账号密码,公开仓库则无所谓,(yml文件写上账号密 会快些)
1.3 git仓库上的配置文件格式
application:程序名, profile:配置文件环境, label:git的分支,默认master
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
本例子:git上面有 config-server-dev.yml和 config-server-pro.yml
访问:http://127.0.0.1:2201/config-server/dev
http://127.0.0.1:2201/config-server/pro
访问后打印的json数据,其中 "propertySources":[] 为空这样是获取不到git上面的信息,配置中心失败
1.4 配置文件加密,首先把jce版本的jar放到本地 {JAVA_HOME}/jre/lib/security目录下
[JCE for JDK8下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html]
然后加密密钥需写在 bootstrap.yml文件中(bootstrap.yml优先级比application.yml高),
对称密钥 encrypt: key: didispace
写在application.yml中时 出现
{
"description":"No key was installed for encryption service",
"status":""
}
配置完后 可以看相关端点,postman请求既可看到端点信息
/encrypt/status:查看加密功能状态的端点 【get】
/key:查看密钥的端点
/encrypt:对请求的body内容进行加密的端点 【post】
/decrypt:对请求的body内容进行解密的端点 【post】
相关例子:
1.5 {cipher}sdfsdfsdffsdfsdfsd 配置文件中通过密钥 加密密文,带上前缀。如果远程属性源包含加密内容(以{cipher}开头的值),则在通过HTTP发送到客户端之前,它们将被解密。
如果要为config客户端应用程序设置远程配置存储库,可能会包含一个application.yml,例如:不同点 有引号无引号之分
application.yml
spring:
datasource:
username: dbuser
password: '{cipher}8121eefc7b082d4c2c5c879e36e3b0a95f3cccebbc03d9b1475f10afdbeeae70'
.properties文件中的加密值不能用引号括起来,否则不会解密该值:
application.properties
spring.datasource.username: dbuser
spring.datasource.password: '{cipher}8121eefc7b082d4c2c5c879e36e3b0a95f3cccebbc03d9b1475f10afdbeeae70'
2:客户端
2.1 客户端指定获取 配置中心 配置文件的config-server-git位置,配置信息需要写在bootstrap.yml中,不然代码中 @value 获取不到配置文件中的信息
项目启动报错Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'foo' in value "${foo}"