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

在Spring云配置服务器中包含多个应用程序的公共配置

宗沛
2023-03-14

我试图迁移我们稳定的应用服务器,以从Spring Cloud配置服务器获取它们的配置。每个应用在配置服务器上都有一个{my-app}. yml文件,我们可以使用配置文件(在名为{my-app}-{file}. yml的文件中,或者使用多配置文件YAML文档)为每个环境进行不同的配置应用程序,我们甚至可以在另一个配置文件中包含一个配置文件,使用spring.profiles.include来提供某种继承-到目前为止,一切都很好。

但是,我们只能在彼此中包含来自同一应用程序的配置文件,并且我们从同一配置服务器配置了多个应用程序,这些应用程序在每个环境中共享大量配置文件-例如,它们几乎都使用相同的数据源配置连接到同一数据库,同样用于消息传递、缓存等。这是大量重复的配置,需要更改的地方很多——这正是SpringCloud配置应该避免的!

是否有“包括”的方法(通过配置文件或其他方式!)在Spring云配置服务器中跨应用共享配置属性?

使现代化

除了下面@vladsfl给出的正确答案外,如果您使用配置服务器上的本机配置文件从文件系统或类路径而不是git repo提供配置,那么要小心,配置服务器将使用应用程序。yml和它的个人资料变体是为自己设计的,但拒绝将它们提供给其他应用程序。解决方法是使用spring。云配置。服务器出生地的searchLocations从其他位置提取服务配置。

共有2个答案

欧阳杰
2023-03-14

可能已经太迟了,但如果其他人也在为同样的问题苦苦挣扎,最终的解决方案如下:

您可以根据需要在配置服务器类路径下创建任意多的yml文件。即使是在原生简档中选择的,也会有提供给客户端的应用。唯一没有提到的是,您应该告诉客户端应用程序也读取这些设置文件。

以下是一个工作示例:

resources
|-config
   |-auth-service.yml - service specific configuration file
|-application.yml - config server settings
|-settings.yml - general settings file, planed to be loaded in every service
spring:
application:
  name: auth-service
cloud:
  config:
    username: "config-user"
    password: "config-password-1234"
    uri: "http://config-service:8888"
    name: ${spring.application.name}, settings

键是name:${spring.application.name},settings,它告诉配置客户端从配置服务器加载以下设置:

  • ${spring.application.name}将加载配置/auth-service.yml
  • 设置将加载settings.yml

聂季同
2023-03-14

对您可以使用应用程序。yml应用程序-

 类似资料:
  • 我正在使用Spring Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 我正在使用Spring Cloud配置服务器,我需要为每个阶段的产品测试和开发创建一个配置文件,我已经为默认配置文件创建了4个yml文件application.yml,为每个配置文件创建了应用程序-{配置文件},所以我的问题是如何通过环境变量加载特定的配置,并在每个配置文件配置和端口上运行配置服务器,我已经创建了一个bootstrap.yml但我不能解决这个问题。如果有人能指导我完成这些步骤来满足

  • 我的Spring Boot应用程序与Spring云配置服务器连接以获取外部化属性,但突然没有与配置服务器连接/对话。我做了很多改变,不确定哪一个会导致这个问题。 > 我验证了我的Spring Boot应用程序中的bootstrap.yml文件,以下配置存在,并且Spring云配置服务器正在该位置运行 spring:application:name:abc cloud:config:uri:http

  • 我正在尝试让Spring Cloud Gateway应用程序自动刷新它的路由配置yml。我已经能够设置一个云配置服务器来托管路由YAML,并使Spring云网关能够通过的用法自动刷新其配置。但是,这需要两个正在运行的应用程序,我们希望尽量减少支持这一需求所需的额外服务器的数量。 Spring Cloud Config Server文档建议任何引导应用程序都可以通过注释嵌入配置服务器:https:/

  • 我正在自学SpringCloudConfig服务器,在将属性注入bean时遇到了一些问题。 因此,我有一个简单的Spring Boot应用程序作为配置客户端,仅用于测试: 但系统会打印: 检查envendpoint时,我实际上发现属性位于环境中: 请注意,在中,有一个名为的属性,其值为 我是Spring框架的新手,所以我想知道我是不是搞砸了什么?有人建议我也可以使用访问外部属性,但我没有找到太多关

  • 我在Git上创建了一个个人存储库,在那里我保存了我的属性文件。我创建了一个云配置服务器('my-config-server'),并使用了git存储库URL。我已经将spring-boot应用程序绑定到Git存储库中,该应用程序应该访问外部属性文件。 问题:在使用外部属性文件之前,我的内部属性文件位于:src/main/resources 在MANIFEST.YML中,我添加了@enableConf