15

我目前有许多可部署的应用程序,它们以分布式方式工作以解决业务问题。我们目前正在使用许多属性配置文件来根据系统环境变量为每个环境提供更改配置。所有这些可部署的应用程序共享数据库和消息传递的通用配置。目前,这是通过从类路径中获取属性文件并让两个部署的应用程序为包含属性文件的每个连接(db、jms)共享一个公共 jar 来实现的。

如果可能,我希望开始使用 Spring Config Server 来外部化此配置。我有一个关于如何共享这个通用配置的问题。

目前它看起来像这样:-

Web1
- 数据库
- jms

Messaging1
- 数据库
- jms

在这种情况下,两个部署的应用程序共享相同的连接,并且这些连接随环境(实验室、prf、prd 等)而变化。如何使用 Spring Configuration Server 实现相同的功能,其中每个可部署应用程序都有应用程序配置?

Application.yml
Web1.yml Web1
-dev.yml
Messaging1.yml
Messaging1-dev.yml

如果某个环境的连接属性发生更改,我需要对每个可部署的应用程序配置进行更改,而不是只更改一次。

目前有没有办法实现这一目标?我只是错过了一个简单的观点吗?

4

4 回答 4

10

我在这里找到了可行的解决方案https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html,段落“2.1.5 与所有应用程序共享配置”。它说:

使用基于文件的(即 git、svn 和本机)存储库,在 application* 中具有文件名的资源在所有客户端应用程序之间共享(如 application.properties、application.yml、application-*.properties 等)。您可以使用具有这些文件名的资源来配置全局默认值,并根据需要让它们被特定于应用程序的文件覆盖。

您应该在配置存储库的顶层创建 application.properties 或 application.yml(如果它基于 git 或 svn)。不要忘记提交更改。

于 2018-02-21T10:18:12.687 回答
5

这就是我为我的设置进行配置的方式。

1所有服务和环境中的所有公共属性都将位于root->application.properties files

2所有特定于服务的环境中的所有公共属性将是root->service-X.properties files

3:同样,跨特定环境使用env->application.properties文件 具有通用属性

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri:[git repo]
          search-paths: /,/{profile}/

在此处输入图像描述

于 2019-05-01T08:31:56.920 回答
3

终于找到了解决办法。它隐藏在github的问题中......

https://github.com/spring-cloud/spring-cloud-config/issues/32

它像描述的那样工作。我只注意到,您需要将文件放在 /config 文件夹中才能使其工作。如果将它放在根目录中,则该文件由配置服务器本身使用,并且不包含在配置请求中。

于 2015-11-20T13:48:47.720 回答
1
  1. application.properties/application.yml将在所有应用程序之间共享。
  2. application-DEV.properties/application-DEV.yml将在所有DEV环境应用程序之间共享。您可以替换DEV为任何spring配置文件。
  3. {applicationName}.properties/{applicationName}.yml将在给应用程序中共享。
于 2021-07-30T01:07:14.070 回答