2

我有一个带有VaultPropertySource类似于以下注释的配置类,它在可以访问 Vault 的环境中运行良好。

@Configuration  
@VaultPropertySource("secret/my-application")
public class AppConfig {

    @Value(${redis.password:default})
    private String password
}

问题是某些部署将无法访问 Vault。在我的bootstrap.yml我已经设置spring.cloud.vault.enabled = false但我得到

应用程序无法启动 - 组件需要一个名为“vaultTemplate”但无法找到。

在这一点上,我可以注释掉VaultPropertySource它并且它有效。在没有 Vault 的情况下,我可以在这些环境中做什么而无需注释掉VaultPropertySource

4

1 回答 1

1

使用Spring 配置文件有条件地在应用程序中启用诸如 Vault 之类的方面。您可以在默认情况下禁用 Vault,并通过另一个启用 Vault 集成的bootstrap.yml配置(例如)重新启用它。bootstrap-vault.yml

AppConfig通过 using应用相同的模式@Profile(…)将有条件地应用@VaultPropertySource并消除提供的需要VaultTemplate

@Configuration  
@VaultPropertySource("secret/my-application")
@Profile("vault")
public class AppConfig {

    @Value(${redis.password:default})
    private String password
}
于 2018-06-21T13:15:56.077 回答