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