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

标签 java spring spring-boot

我需要将 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/

相关文章:

java - 如何在反序列化后初始化我的对象数组

java - 对象映射器 : Do not escape

java - 如何为post请求编写mockito测试

java - spring boot2.0中log4j2日志无法输出到文件中,谁能帮帮我?

java - 如何调用drools规则的 'when'部分中的Java函数?

java - 当组件超出文本区域时启用 ScrollPane

spring - 使用 Spring 和 Kotlin 在微服务架构中共享数据类

java - 如果父 bean 定义为原型(prototype),子 bean 是否自动成为原型(prototype)

java - spring 单例 bean 字段未填充

java - spring-data-rest 和微服务 : Entity with @OneToOne relationship with Entity in another spring-data-rest service