我正在使用弹簧靴。我在application.yml.中定义了属性
spring:
datasource:
username: username
password: password
用户名和密码值存储在外部,程序在启动过程中获取这些值。假设在启动期间获取它们的bean是dbConfig
如何将值从dbConfgig
注入application.yml?
我使用的是spring数据jpa自动配置,它在启动时自动连接到数据库。我希望在spring连接到数据库之前将这些值加载到application.yml中。
无需在application.yml
中注入用户/密码。您可以通过程序设置它们,如下所示:
@Configuration
public class DataSourceConfig {
@Bean
public DataSource getDataSource() {
DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
dataSourceBuilder.driverClassName("org.h2.Driver");
dataSourceBuilder.url("jdbc:h2:mem:test");
// Take the values from external source, then set them
dataSourceBuilder.username("username");
dataSourceBuilder.password("password");
return dataSourceBuilder.build();
}
}
我认为,首先,您必须创建一个线程来检测db Config file
上的更改,然后您必须重新初始化您的bean(数据源(以使更改生效。
请参阅:如何重新初始化弹簧式
您也可以尝试spring-cloud来存储属性。然后您可以在占位符的帮助下使用。
https://cloud.spring.io/spring-cloud-config/reference/html/