【发布时间】:2021-05-06 13:14:47
【问题描述】:
我有一个特定要求,我需要通过 Web 服务调用从安全保险库中获取数据库密码 (spring.datasource.password=)。
但问题是,当我启动我的 Spring Boot 应用程序时,它会尝试建立一个 Hikari 连接池。
我怎样才能做到这一点?
【问题讨论】:
标签: spring-boot hikaricp
我有一个特定要求,我需要通过 Web 服务调用从安全保险库中获取数据库密码 (spring.datasource.password=)。
但问题是,当我启动我的 Spring Boot 应用程序时,它会尝试建立一个 Hikari 连接池。
我怎样才能做到这一点?
【问题讨论】:
标签: spring-boot hikaricp
您可以通过在配置中创建 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-vault、https://spring.io/guides/gs/vault-config/。
您可以将密码作为环境变量注入。此变量应命名为SPRING_DATASOURCE_PASSWORD。或者您可以创建自己的 PropertySource 来提供所需的变量。
您可以在Spring blog 中找到有关此选项的更多信息。
【讨论】: