使用带有Spring Boot的Java Config从数据库加载属性

时间:2018-02-13 09:55:50

标签: java spring spring-boot spring-java-config xml-configuration

我创建了一个FactoryBean<Properties>

public final class SystemProperteisFactoryBean implements FactoryBean<Properties> {

    private static final String QUERY = "select * from tb_system_properties";

    private final NamedParameterJdbcTemplate jdbcTemplate;

    public SystemProperteisFactoryBean (DataSource datasource) {
        this.jdbcTemplate = new NamedParameterJdbcTemplate (datasource);
    }

    @Override
    public Properties getObject() {
        Properties result = new Properties();
        jdbcTemplate.query(QUERY,
            (ResultSet rs) -> result.setProperty(rs.getString(1), rs.getString(2));
        return result;
    }

    @Override
    public Class<?> getObjectType() {
        return Properties.class;
    }

    @Override
    public boolean isSingletone() {
        return true;
    }
}

这个类使用Spring和XML配置工作正常,我使用JNDI名称获取DataSource,然后创建适当的属性,然后通过XML标记使用propertiesPlaceHoldeConfigurer。

现在我想在Spring Boot和Java Config中使用相同的东西。

当我将ProprtySourcesPlaceHolderConfigurer定义为bean(在@Configuration类中的静态方法中)时,Spring会尝试在数据源之前创建此bean。

有没有办法在PRopertySourcesPlaceHolderConfigurer之前创建数据源?

1 个答案:

答案 0 :(得分:0)

基本上你需要以这种方式将依赖项作为'a'方法参数:

'b'