【发布时间】:2021-10-20 06:28:20
【问题描述】:
我设置了一个spring-cloud-config 服务器来提供来自 git 存储库的 YML 文件。服务器正在使用 Spring Cloud 2020.0.3。有几个spring-cloud-config 客户端正在使用来自服务器的配置文件。使用配置的客户端应用程序正在使用 Spring Boot 2.4.6 和新的配置解析实现。
配置存储库包含一个application-db.yml 文件和myapp.yml 文件。 application-db.yml 文件有几个公共属性集,所有应用程序都将用于db 配置文件。 myapp.yml 具有特定应用程序的属性。在使用 Spring Boot 2.4.6 之前,我能够在 myapp.yml 中覆盖来自 application-db.yml 的属性。实际上,application-db.yml 属性是各个应用程序可以覆盖的默认值。
例如application-db.yml 可能有(属性键不相关):
spring:
datasource:
hikari:
maximum-pool-size: 5
将大多数应用程序的连接池大小设置为5,myapp.yml 可以设置
spring:
datasource:
hikari:
maximum-pool-size: 10
对于10 的一次性连接池大小。
在 Spring Cloud 2020.0.3 (Spring Cloud Config 3.0.4) 和 Spring Boot 2.4.6 中,application-db.yml 中的属性不能在 myapp.yml 中被覆盖,并且连接池大小属性始终具有值5.
我已尝试在application.yml 中设置以下属性,结果仍然相同。
spring:
cloud:
config:
allowOverride: true
overrideNone: true
overrideSystemProperties: false
根据Config file processing in Spring Boot 2.4,在配置处理中允许覆盖属性值,但这取决于文档顺序。
Spring Boot 使用 Spring Cloud Config 是否仍支持覆盖行为?如果是这样,它是否取决于云配置服务器提供文档的顺序?有没有办法控制顺序?
编辑说明:我最初在application.yml 文件中发布了关于覆盖属性的信息。经过更多调查,这确实允许覆盖。在诸如application-db.yml 之类的配置文件特定文件中,我无法覆盖值。我开始认为这可能是一个错误。
【问题讨论】:
标签: spring-boot spring-cloud spring-cloud-config