获取数据库的Bean名称(动态地)

时间:2018-08-16 09:53:45

标签: java spring

我在Spring 4中在bean下面创建了文件。目前在下面的配置文件中将HOST和其他变量声明为static。 但是要动态地从数据库中获取它。无法找到一种获取方法。

请提出从数据库中获取它的方法。

@Configuration
public class RabbitMqConfiguration {

    public static final String HOST = "localhost";
    public static final String USERNAME = "test";
    public static final String PASSWORD = "test";
    public static final int CHANNEL_CACHE_SIZE = 25;
    public static final int CONNECTION_CLOSE_TIMEOUT = 30000;
    public static final int CONNECTION_CACHE_SIZE = 1;
    public static final int REQUEST_HEART_BEAT = 0; 

    @Bean
    public ConnectionFactory connectionFactory() {
        CachingConnectionFactory connectionFactory = new CachingConnectionFactory(HOST);
        connectionFactory.setUsername(USERNAME);
        connectionFactory.setPassword(PASSWORD);
        connectionFactory.setCloseTimeout(CONNECTION_CLOSE_TIMEOUT);
        connectionFactory.setChannelCacheSize(CHANNEL_CACHE_SIZE);
        connectionFactory.setConnectionCacheSize(CONNECTION_CACHE_SIZE);
        connectionFactory.setRequestedHeartBeat(REQUEST_HEART_BEAT);
        return connectionFactory;
    }
}

1 个答案:

答案 0 :(得分:0)

有两种方法可以使用MutablePropertySources加载属性,也可以仅将属性存储在HashMap中。

解决方案背后的基本思想如下:

  1. 配置数据库Bean。
  2. 在方法上使用@PostConstruct批注以从db中读取消息传递配置。
  3. RabbitMqConfiguration中自动装配DBConfiguration类。
  4. 使用PropertySources编辑MutablePropertySources或直接创建HashMap来加载配置。

您可以参考MutablePropertySources

loadConfigFromDB