我有一个带有VaultPropertySource
批注的配置类,该类与以下类似,在可访问Vault的环境中非常有用。
@Configuration
@VaultPropertySource("secret/my-application")
public class AppConfig {
@Value(${redis.password:default})
private String password
}
问题是某些部署无法访问保险柜。在我的
bootstrap.yml
中,我已经设置了spring.cloud.vault.enabled = false
,但是我得到了应用程序无法启动-找不到所需的名为“ vaultTemplate”的组件。
在这一点上,我可以注释掉
VaultPropertySource
,它可以工作。在没有Vault且无需注释VaultPropertySource
的情况下,我可以在这些环境中做什么? 最佳答案
使用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
}