尝试设置 Sprint 启动应用程序以从Azure App Configuration加载配置,并参考Azure Key Vault条目以获取包含敏感信息的属性。
使用应用程序配置工作正常,并且在将 Key Vault 引用添加到应用程序配置时出现问题。
为了连接到 Key Vault,AzureConfigBootstrapConfiguration
查找KeyVaultCredentialProvider
加载时不可用的 bean:
@Bean
public AzureConfigPropertySourceLocator sourceLocator(AzureCloudConfigProperties properties,
AppConfigProviderProperties appProperties, ClientStore clients, ApplicationContext context) {
KeyVaultCredentialProvider keyVaultCredentialProvider = null;
try {
keyVaultCredentialProvider = context.getBean(KeyVaultCredentialProvider.class);
} catch (NoUniqueBeanDefinitionException e) {
LOGGER.error("Failed to find unique TokenCredentialProvider Bean for authentication.", e);
if (properties.isFailFast()) {
throw e;
}
} catch (NoSuchBeanDefinitionException e) {
LOGGER.info("No TokenCredentialProvider found.");
}
return new AzureConfigPropertySourceLocator(properties, appProperties, clients, keyVaultCredentialProvider);
}
试图创建具有最高优先级的 bean,但它不起作用:
@Configuration
public class DemoConfiguration {
@Bean
@Order(Ordered.HIGHEST_PRECEDENCE)
public KeyVaultCredentialProvider keyVaultCredentialProvider() {
return uri -> new EnvironmentCredentialBuilder().build();
}
}
还尝试在 bean 和课堂上使用@Primary
and ,但没有一个替代品有效。@Priority
@AutoConfigureBefore(AzureConfigBootstrapConfiguration.class)
DemoConfiguration
问题:
你知道在初始化KeyVaultCredentialProvider
之前如何创建bean吗?AzureConfigBootstrapConfiguration