如何调整Azure Key Vault与Spring Cloud Config的加载顺序
默认Azure Key Vault Spring Boot Starter的配置源优先级高于Spring Cloud Config,所以启动时会先加载Key Vault,无法读取到存放在配置中心的Key Vault相关参数,你可以通过以下两种常用方案调整加载顺序,实现Spring Cloud Config优先加载:
方案1:调整bootstrap阶段导入顺序(推荐)
Spring Boot 2.4+ 及对应Spring Cloud版本中,spring.config.import的声明顺序直接决定配置源的加载优先级,先声明的配置源会先加载。
- 首先引入bootstrap依赖(Spring Cloud 2020.0「Ilford」及以上版本需要,旧版本可跳过):
pom.xml配置:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> </dependency>
- 调整
bootstrap.yml的配置顺序,将配置中心的导入声明放在Key Vault前面:
spring: application: name: 你的应用名称 cloud: config: uri: 你的Spring Cloud Config Server地址 config: import: - optional:configserver:${spring.cloud.config.uri} - optional:azure-keyvault:
方案2:禁用Key Vault自动加载,配置中心加载完成后再开启
如果方案1不生效(比如用的是低版本Azure Key Vault Starter),可以先关闭Key Vault的默认自动加载,等配置中心的配置拉取完成后再开启Key Vault:
- 在本地
bootstrap.yml中添加配置,关闭Key Vault自动加载:
azure: keyvault: enabled: false
- 在Spring Cloud Config Server对应的应用配置文件中,添加完整的Key Vault配置并开启:
azure: keyvault: enabled: true uri: 你的Key Vault访问地址 client-id: 你的Azure客户端ID client-secret: 你的Azure客户端密钥 tenant-id: 你的Azure租户ID spring: config: import: azure-keyvault:
注意事项
- 如果不需要加载失败时仍然启动应用,可去掉配置中的
optional:前缀 - 确认Azure Key Vault Starter版本和Spring Boot、Spring Cloud版本兼容性,避免版本不匹配导致配置顺序不生效
内容的提问来源于stack exchange,提问作者long_long_ago
相关产品推荐
相关产品推荐

