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

Spring Cloud config server-如何添加自定义属性源可见的findOne()方法的环境加密环境仓库

郤望
2023-03-14

我的目标是将自定义属性源添加到Spring-Cloud-server。我想实现的是在Spring-Cloud-config-Client应用程序中从该自定义源获得一些自定义属性。

根据在sping-config-server中添加环境存储库的建议,我已经创建了sping-Cloud-config-server应用程序和单独的项目sping-Cloud-config-自定义。第二个是基于sping-Cloud-consul-config代码的。因此,我已经创建了所有必要的类,如CustomProperty tySourceCustomProperty tySourceLocatorCustomConfigBootstrapConfigsion等等,并在spring.factories中配置它们。

最后,我在我的spring cloud config服务器中添加了maven依赖项到spring cloud config custom

到现在为止,一直都还不错。一切正常。当我启动服务器时,我可以看到我的CustomPropertySourceEnvironmentRepositorybean注入到EnvironmentController中的propertySources列表中。

问题:当我向@RequestMapping(“/{name}/{profiles}/{label:.*}”)(在EnvironmentController中)发送GET请求时,注入的environmentrepositorybean被用来查找请求的属性源(repository.findOne(name,profiles,label)method)。不幸的是,这里找不到我的房产来源。为什么?

我花了很多时间调试这个。我发现存储库将findOne()方法调用委托给其他存储库:multipleJitEnvironmentRepository,它将它委托给NativeEnvironmentRepository。在这个委托中,findOne()方法不使用从EnvironmentRepositoryprimary注入控制器的propertySources。它创建了新的环境存储库,其中包含新的属性资源列表和新的独立Spring应用程序。最后,这个列表不包含我的CustomPropertySource,这就是为什么findOne()在生成的环境对象中返回空的propertySources。

  1. 我做错什么了吗?
  2. Spring-Cloud-config-serverSpring-Cloud-config-server中是否应该使用(自动安装/引导)
  3. Spring-Cloud-config-server可以通过REST接口(我说的不同是指所有Git,Consul和ZooManager)同时交付许多不同类型的属性源吗?

共有1个答案

左丘耀
2023-03-14

您要做的是向配置服务器本身添加属性源,而不是它所服务的配置。将spring boot starter actuator添加到配置服务器并查看/env会显示:

{
  "profiles": [

  ],
  "server.ports": {
    "local.server.port": 8888
  },
  "bootstrapProperties:custom": {
    "test.prop3": "CUSTOM-VALUE-3",
    "test.prop2": "CUSTOM-VALUE-2",
    "test.prop1": "CUSTOM-VALUE-1"
  },
}

要添加将由config server提供服务的内容,您必须实现一个环境存储库

最近添加了对复合环境仓库的支持。

 类似资料:
  • 我编写了一个PropertySource,它为spring启用类路径前缀。Kafka。属性。ssl。信任库。位置(不支持开箱即用)。本质上,这让我可以放置一个信任库。我的Spring Boot应用程序的src/main/resources文件夹中的jks,并从中引用它。jar文件。 这对于纯SpringKafka配置非常有效,如下所示: 当在Spring Cloud Stream活页夹的上下文中给

  • 我试图使用Micronaut 3加载特定于环境的属性。我有两个文件和 application.yml application-dev.yml 正在尝试访问URL 在teamConfiguration变量中,我可以看到文件不是来自文件。 正如我所知,默认情况下Micronaut只查找应用程序。yml。然后,对于测试、开发和产品,它加载应用程序。yml并用应用程序测试中定义的值覆盖其中的任何值。yml

  • 我正在一个spring启动的应用程序,我需要你的协助在下面的场景。 我有每个环境的属性文件,比如application-dev.properties,application-prod.properties等。我的应用程序可以通过使用spring@profile注释来加载特定于环境的属性文件。 请帮帮忙。

  • 问题内容: 我正在使用Jupyter Lab,无法添加环境。这个想法是从我的基本环境启动Jupyter Lab,然后能够选择我的其他conda env作为内核。 我安装了应该可以做到这一点的软件包,但是它并没有按照我的意愿工作。确实,假设我创建了一个新的Conda Environment,然后从基础上启动了jupyter Lab,我无法将新环境视为可用的内核。 我找到了一个“修复程序”,它每次都可

  • 问题内容: 我使用martini在Go中有一个GAE应用程序。我需要能够设置环境变量以告诉martini它应该使用生产设置进行初始化。根据Python文档,您可以在app.yaml中设置环境变量。我没有在Go docs中 看到任何有关此的内容,但我猜想它应该可以正常工作。 我需要能够将环境变量设置为,但是我只想在实际投入生产时(即)进行操作。有什么方法可以告诉您仅在非开发服务器上运行吗? 问题答案

  • 我正在spring boot中构建一个可重用的库,它可以调用Rest API并进行一些验证。这将构建为JAR,目标是通过添加pom将此库用作maven依赖项。其他spring boot项目中的xml。 问题是库如何知道要加载哪些环境属性。因为它没有在任何服务器上运行。例如:调用应用程序将包含为依赖项,并部署在dit环境中。我希望库能够获取dit属性,如url、令牌等,以及关于如何实现这一点的任何建