0

我对解析配置服务器共享文件中的环境变量有疑问。我目前的设置非常小:

  1. src/main/resources/shared/application.yml

    应用程序:版本:0.0.1-早期测试:${JAVA_HOME}

  2. src/main/resources/application.properties

    spring.profiles.active=native spring.cloud.config.server.native.searchLocations=classpath:/shared

  3. 使用 gradle :

    • spring-boot-gradle-plugin:2.0.0.RELEASE
    • 弹簧云依赖项: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 变量没有被解析。同样的事情是:

我看过Spring 云配置服务器。属性中的环境变量,但解决方案对我没有帮助 + 从那时起那里很少有新版本。所以我要提出新问题。

4

2 回答 2

2

实际上这不是一个错误,一切都很好。我不明白配置服务器是如何工作的。

  1. http://localhost:8888/apptest/application- 返回尚未解析的${JAVA_HOME}值
  2. 当我们得到 ei。进入容器“C”,它 ping 配置服务进行配置,curl http://config:8888/apptest/application我们是否得到相同的 - 未解决的${JAVA_HOME}
  3. 但是当我们查看 Spring 应用程序 ei 时。在容器“C”中并尝试注入@Value("${application.test}")某处,我们得到正确的值或未设置环境变量的信息。

这意味着环境变量是在客户端解析的。
多亏了这一点,我才明白 env_variables 方法是如何不生产就绪的。

于 2018-03-20T10:33:34.070 回答
0

好吧,这里发生了变化https://github.com/spring-cloud/spring-cloud-config/commit/f8fc4e19375d3b4c0c2562a71bc49ba288197100删除了替换环境变量的支持。

您始终可以添加新控制器并覆盖EnvironmentPropertySource#prepareEnvironment

于 2019-01-31T22:45:07.990 回答