【问题标题】:Fetch DB password from a web service in Spring boot在 Spring Boot 中从 Web 服务获取数据库密码
【发布时间】:2021-05-06 13:14:47
【问题描述】:

我有一个特定要求,我需要通过 Web 服务调用从安全保险库中获取数据库密码 (spring.datasource.password=)。

但问题是,当我启动我的 Spring Boot 应用程序时,它会尝试建立一个 Hikari 连接池。

我怎样才能做到这一点?

【问题讨论】:

    标签: spring-boot hikaricp


    【解决方案1】:

    选项一

    您可以通过在配置中创建 DataSource bean 来覆盖 Spring 的自动配置。

    @Bean
    public DataSource dataSource(HikariConfig hikariConfig) {
        return new HikariDataSource(hikariConfig);
    }
    
    @Bean
    @ConfigurationProperties(prefix = "prefix")
    public HikariConfig hirariConfig() {
        HicariConfig config = new HikariConfig();
        // password retrieve logic
        config.setPassword(password);
        return config;
    }
    

    选项二

    如果你想使用 Spring 的自动配置 DataSource,你也可以使用 Spring Cloud Vault,它可以在 Vault 中查找属性。以下是一些可以帮助您入门的教程:https://spring.io/projects/spring-cloud-vaulthttps://spring.io/guides/gs/vault-config/

    其他选项

    您可以将密码作为环境变量注入。此变量应命名为SPRING_DATASOURCE_PASSWORD。或者您可以创建自己的 PropertySource 来提供所需的变量。

    您可以在Spring blog 中找到有关此选项的更多信息。

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 2020-08-07
      • 2020-02-05
      • 2021-12-07
      • 2013-02-28
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2018-04-24
      相关资源
      最近更新 更多