gpt4 book ai didi

java - Spring Boot : Use database and application. 配置属性

转载 作者:搜寻专家 更新时间:2023-10-31 19:37:10 24 4
gpt4 key购买 nike

我需要将 Spring Boot 应用程序的配置保存在数据库中。

是否可以将数据库信息存储在 application.properties 中并使用它们连接到数据库并从那里检索所有其他属性?

所以我的 application.properties 看起来像:

spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydb
spring.datasource.username=user
spring.datasource.password=123456
spring.jpa.database-platform=org.hibernate.dialect.SQLServer2012Dialect

其他配置将从数据库中获取,如下所示:

@Configuration
@PropertySource(value = {"classpath:application.properties"})
public class ConfigurationPropertySource {

private final ConfigurationRepository configurationRepository;

@Autowired
public ConfigurationPropertySource(ConfigurationRepository configurationRepository) {
this.configurationRepository = configurationRepository;
}

public String getValue(String key) {
ApplicationConfiguration configuration = configurationRepository.findOne(key);
return configuration.getValue();
}

}

ApplicationConfiguration 作为 Entity

但是Spring Boot并没有从数据库中获取配置。

最佳答案

您可以锻炼的一个可能的解决方案是使用 ConfigurableEnvironment并重新加载和添加属性。

@Configuration   
public class ConfigurationPropertySource {

private ConfigurableEnvironment env;

private final ConfigurationRepository configurationRepository;

@Autowired
public ConfigurationPropertySource(ConfigurationRepository configurationRepository) {
this.configurationRepository = configurationRepository;
}

@Autowired
public void setConfigurableEnvironment(ConfigurableEnvironment env) {

this.env = env;
}

@PostConstruct
public void init() {
MutablePropertySources propertySources = env.getPropertySources();
Map myMap = new HashMap();
//from configurationRepository get values and fill mapp
propertySources.addFirst(new MapPropertySource("MY_MAP", myMap));
}

}

关于java - Spring Boot : Use database and application. 配置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465360/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com