Spring Cloud Vault。 VaultPropertySource在没有Vault的环境中出现问题

时间:2018-06-18 22:50:02

标签: java spring-boot spring-cloud-vault-config

我有一个类似于以下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的情况下在这些环境中做什么?

1 个答案:

答案 0 :(得分:1)

使用Spring profiles有条件地在应用程序中启用诸如Vault之类的功能。您可以默认在bootstrap.yml中禁用保险柜,然后通过具有启用保险柜集成的其他配置(例如bootstrap-vault.yml)来重新启用保险柜。

通过使用AppConfig将相同的模式应用于@Profile(…)将有条件地应用@VaultPropertySource,而无需提供VaultTemplate

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

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