Spring 引导:使用 bootstrap.yml 加载通用配置应用程序属性文件

Spring Boot: Load common config application properties file using bootstrap.yml

在我们的配置服务器中,我们有以下应用程序属性文件:

helloApp-dev.properties //dev env properties
helloApp-commonConfig.properties //common properties across env

可从 URI 访问这些属性,例如:

https://myapp.abc.com/1234/helloApp-dev.properties
https://myapp.abc.com/1234/helloApp-commonConfig.properties

下面是我们的bootstrap.yml helloApp应用:

---
spring:
  application:
    name: helloApp
    
---
spring  
  profiles: dev
  cloud:
    config:
      label: 1234
      name: {spring.application.name}
      uri: https://myapp.abc.com/

我正在使用 Spring 引导版本 2.2.4。 helloApp-dev.properties 正在应用程序中成功加载,但不是 commonConfig。

要加载属性文件,配置文件应该匹配。 您有 2 个解决方案:

  1. 重命名 helloApp-commonConfig.properties -> helloApp.properties
  2. 为您的应用程序使用多个配置文件(devcommonConfig

未加载 commonConfig 中的配置,因为您没有指示 Spring 它应该加载 profile/config,因为您只激活了 dev配置文件 - 该配置文件的配置是正在加载的配置文件:

---
spring  
  profiles: dev

除了@kozintsov 在 his/her 回答中提出的好的解决方案外,如果您需要在不同的环境或配置文件中包含某些通用配置,比如说 devqaprod,您可以使用 spring.profiles.include 配置 属性 并包含,如果使用 properties 文件,则作为逗号分隔的值列表,或者作为列表,如果使用 yaml , 不同的常用配置文件和你需要的相应配置。

在您的示例中,在 helloApp-dev.properties 中,您需要在其余配置中包含以下信息:

spring.profiles.include=commonConfig

这些相关的 and this article 也可能有所帮助。