我有一个带有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
}

08-26 07:05