Spring Cloud Config Server:如何在应用程序特定文件中覆盖共享属性

时间:2019-03-19 00:46:33

标签: spring-boot spring-cloud-config

我希望在多个应用程序之间共享一些属性,如下所示,我希望 能够覆盖值,所以如果我在application-dev.properties中有x = 1,我应该能够覆盖我的x 特定于应用程序的文件,即在我的情况下,test_app-dev.properties包含x = 2。因此,当我打电话给http://local主机:8888 / test_app / dev x = 1时,一切都压倒了。文件在git中。应该不是返回x = 2还是我误解了共享属性的意图?

https://cloud.spring.io/spring-cloud-config/single/spring-cloud-config.html的“ 2.1.5与所有应用程序共享配置”中。它说:

使用基于文件的存储库(即git,svn和本机),在所有客户端应用程序(例如application.properties,application.yml,application-*。properties等)之间共享application *中具有文件名的资源。您可以使用具有这些文件名的资源来配置全局默认值,并在必要时将其设置为特定于应用程序的文件。

3 个答案:

答案 0 :(得分:1)

最初,我自己也遇到了这个问题。看完@ user1549440答案后,对如何使用公共属性有了一个想法。将可共享的配置文件夹安排为第一个可搜索路径后,它可以按预期工作。刚刚添加了方便的解决方案的工作示例。

下面是configuration-server中的示例配置。

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: file://app/configurations
          default-label: master
          search-paths:
            - 'common*'
            - 'petstore*'
            - 'inventory*'
  info:
     app:
       name: Configuration Server
       description: Spring Cloud Configuration Server
       version: 1.0.0
  security: 
    user: 
      name: myname
      password: mypass

下面是应用程序的示例文件夹结构。

├── app
│   └── configurations
│       ├── common
│       │   ├── application-dev.yml
│       │   ├── application-test.yml
│       │   ├── application-stg.yml
│       │   └── application-prod.yml
│       ├── inventory
│       │   ├── petstore-dev.yml
│       │   ├── petstore-test.yml
│       │   ├── petstore-stg.yml
│       │   └── petstore-prod.yml
│       └── petstore
│           ├── inventory-dev.yml
│           ├── inventory-test.yml
│           ├── inventory-stg.yml
│           └── inventory-prod.yml

答案 1 :(得分:0)

如果您使用的是基于git的存储库,请检查文件是否已提交。 似乎与线程中提到的问题相同-https://github.com/spring-cloud/spring-cloud-config/issues/32

希望会有所帮助。

答案 2 :(得分:0)

我在spring.cloud.config.server.git.searchPaths中发现订单不正确的问题