spring boot application.properties value from bean data



我正在使用弹簧靴。我在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/

最新更新