Spring 云配置 - 自定义 Bootstrap 上下文以从另一个 属性 源读取配置 URI

Spring Cloud Config- Customizing the Bootstrap context to read config URI from another property Source

所以我有以下用例-

我需要自定义 bootstrap 上下文以从特定文件读取配置服务器所在的 uri,然后将该 uri 注入 属性 spring.cloud.config.uri 以从中获取属性配置服务器。

我一直在查看有关 Spring 云共享资源的文档,并尝试过自定义 Bootstrap 属性 源。不幸的是,这不起作用,因为它充当应用程序上下文的另一个属性来源,而不是 bootstrap 上下文(bootstrap.yml 或属性)的属性来源。

到目前为止我唯一的解决方案(可能不是最优雅的解决方案)是在我们 运行 [=38] 之前将 uri 属性 设置为系统 属性 =]申请.

所以,类似下面的内容。

            public static void main(String args[]) {

            * Read properties from file and set as system properties*
            System.setProperty("uri","http://localhost:8097");
            SpringApplication.run(Application.class,args);

          }

然后在bootstrap.properties中引用上面的属性作为-

          spring.cloud.config.uri=${uri}

这有效而且没问题,但我仍然想以更 Spring 友好的方式来做这件事。

提前致谢。

我认为您可以使用 运行 arg 参数并给出如下默认值:

spring.cloud.config.uri=${config.uri:http://localhost:8097}

java jar xxx.jar --config.uri=http://localhost:8099

很遗憾,这无法完成。

您可以使用 config

更改 bootstrap.yml/properties 的位置
                 spring.cloud.bootstrap.location

但是,您不能添加一个 bean 来读取将成为 Bootstrap 上下文一部分的属性,因为 Bootstrap 上下文将是用户自己创建的最高级祖先的父级.