当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Config-自定义引导上下文以从另一个属性源读取配置URI

解明辉
2023-03-14

所以我有下面这个用例-

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

我一直在研究Spring云共享空间上的留档,并尝试了自定义Bootstrap属性源。不幸的是,这不起作用,因为这是应用程序上下文的另一个属性源,而不是引导上下文(bootstrap.yml或属性)的属性源。

到目前为止,我唯一的解决方案可能不是最优雅的解决方案是在我们运行Spring Application之前将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);

          }

然后在引导中引用上述属性。属性为-

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

这是可行的,但我还是想用一种更适合Spring的方式。

提前感谢。

共有2个答案

杜诚
2023-03-14

我认为您可以使用run arg参数并给出一个默认值,如下所示:

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

java jar xxx.jar --config.uri=http://localhost:8099
鲁霄
2023-03-14

不幸的是,这是不可能的。

您可以使用配置更改bootstrap.yml/properties的位置

                 spring.cloud.bootstrap.location

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

 类似资料:
  • 在我的项目中有2个资源属性 1.application.properties 2. 应用开发.性能 此类使用开发的值属性 我使用 application-development.properties 作为我的项目资源 因此,我使用以下命令运行该项目: < code > mvn spring-boot:run-D spring . profiles . active = development 但是

  • 文本文件中有两个值,如下所示: 我想将这两个值保存为两个自定义属性,以便我可以在肥皂请求中使用它。 这是我到目前为止所拥有的,但没有运气: 我收到以下错误:

  • 我们正在从1.3.0升级Spring引导版本。发布到2.3.12。释放。根据旧版本,yml文件使用以下代码片段读取 在src/main/Resources/config/中配置文件 myconf源中的内容。yml 相应的测试类 更改到新版本后,它会抛出一个错误。 如果我删除属性,spring将如何知道类MyConfigProperties必须读取MyConfigSource。yml 另外,在运行测

  • 在Karaf中,包有没有办法从另一个包读取属性文件? 我有 bundle1,它包含 bundle2 使用的一些类(bundle1 通过 maven-bundle-plugin 导出包含这些类的包,bundle2 导入它)。但是 bundle2 还需要使用 bundle1 中的属性文件。除了类之外,还有没有办法从 bundle1 访问一个文件? 据我所知,一种选择是通过features文件将属性部署

  • 问题内容: 是否可以通过读取另一个bean的属性来设置一个bean的属性?例如,假设我有: 我希望Spring实例化这两个类,并调用A的setList方法,并传入调用B的getList方法的结果。Spring配置可能类似于: las,这种伪造的XML不起作用。 为什么不将B注入A?因为我不想引入额外的依赖关系。A仅依赖列表,而不依赖B。 问题答案: 如果你使用的是spring 3.0,还可以使用新

  • 问题内容: 我正在尝试从我的wildfly配置文件夹中的属性文件中读取特定于部署的信息。我尝试了这个: 但是显然这不起作用,因为配置文件夹不再位于类路径中。现在我找不到一种简单的方法。我最喜欢的是这样的: 到目前为止,我在网上找到的唯一解决方案是制作自己的OSGi模块,但是我相信必须有一种更简单的方法来实现(一个没有OSGi!)。谁能告诉我如何? 问题答案: 如果要从配置目录(例如或)中显式读取文