跨云应用程序的Spring Cloud Config Server共享属性

时间:2015-04-21 20:00:42

标签: spring properties spring-cloud spring-cloud-config

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

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

目前它看起来像这样: -

WEB1
  - 数据库
  - jms

Messaging1
  - 数据库
  - jms

在这种情况下,两个部署的应用程序共享相同的连接,并且这些连接会根据环境(lab,prf,prd等)进行更改。如何为每个可部署应用程序配备应用程序配置的Spring配置服务器实现相同的目标?

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

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

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

4 个答案:

答案 0 :(得分:6)

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

  

使用基于文件(即git,svn和native)的存储库,资源   应用程序*中的文件名在所有客户端之间共享   应用程序(所以application.properties,application.yml,   申请 - *。财产等)。您可以将资源与这些文件一起使用   用于配置全局默认值并将其覆盖的名称   特定于应用程序的文件。

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

答案 1 :(得分:1)

终于找到了解决方案。它被埋没在github的问题中......

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

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

答案 2 :(得分:1)

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

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}/

enter image description here

答案 3 :(得分:0)

  1. application.properties/application.yml 将在所有应用程序之间共享。
  2. application-DEV.properties/application-DEV.yml 将在所有 DEV 环境应用程序之间共享。您可以将 DEV 替换为任何 spring 配置文件。
  3. {applicationName}.properties/{applicationName}.yml 将在给定的应用程序中共享。