Spring Config Server - 解析占位符+环境变量
Posted
技术标签:
【中文标题】Spring Config Server - 解析占位符+环境变量【英文标题】:Spring Config Server - resolvePlaceholders + enviroment variables 【发布时间】:2018-08-14 08:38:19 【问题描述】:我有关于在配置服务器的共享文件中解析环境变量的问题。 我目前的设置非常小:
src/main/resources/shared/application.yml:
应用: 版本:0.0.1-早期 测试:$JAVA_HOME
src/main/resources/application.properties:
spring.profiles.active=native spring.cloud.config.server.native.searchLocations=classpath:/shared
使用 gradle :
spring-boot-gradle-plugin:2.0.0.RELEASE spring-cloud-dependencies:Camden.SR7 然后当然在 deps 中编译 'org.springframework.cloud:spring-cloud-config-server'问题: GET http://localhost:8888/apptest/application 给我:
"name": "apptest",
"profiles": [
"application"
],
"label": null,
"version": null,
"state": null,
"propertySources": [
"name": "classpath:/shared/application.yml",
"source":
"application.version": "0.0.1-early",
"application.test": "$JAVA_HOME"
]
所以 env 变量没有被解析。同样的事情是:
http://localhost:8888/apptest/application?resolvePlaceholders=true http://localhost:8888/lab/apptest-application.properties?resolvePlaceholders=true http://localhost:8888/lab/apptest-application.properties?resolvePlaceholders=false http://localhost:8888/apptest-application.properties?resolvePlaceholders=true我查看了Spring cloud config server. Environment variables in properties,但解决方案对我没有帮助 + 从那时起那里很少有新版本。所以我要提出新问题。
【问题讨论】:
【参考方案1】:这里发生的变化https://github.com/spring-cloud/spring-cloud-config/commit/f8fc4e19375d3b4c0c2562a71bc49ba288197100 删除了对替换环境变量的支持。
您始终可以添加新控制器并覆盖 EnvironmentPropertySource#prepareEnvironment
的行为
【讨论】:
【参考方案2】:实际上这不是错误,一切都很好。我不明白配置服务器是如何工作的。
http://localhost:8888/apptest/application
- 返回尚未解析的 $JAVA_HOME 的值
当我们得到 ei。进入容器 "C" ping 配置服务以进行配置并执行 curl http://config:8888/apptest/application
我们得到相同的结果 - 未解决 $JAVA_HOME
但是当我们查看 Spring 应用程序 ei 时。在容器“C”中并尝试在某处注入@Value("$application.test")
,我们得到正确的值或未设置环境变量的信息。
表示环境变量在客户端解析。 多亏了这一点,我才明白 env_variables 方法是如何不生产就绪的。
【讨论】:
以上是关于Spring Config Server - 解析占位符+环境变量的主要内容,如果未能解决你的问题,请参考以下文章
0701-spring cloud config-简介Config Server开发Config Client开发
如何获取 Spring-Cloud-Config-Server 管理的文件列表
spring.cloud.config.server.native.search-locations 不适用于 Spring Cloud Config 服务器中的占位符
spring-cloud-config-server——Environment Repository
Spring Cloud Config Config Server - 多个实例之间的同步
spring-cloud-config 服务器-org.springframework.cloud.config.server.environment.NoSuchRepositoryExceptio