java - 使用 Java Config 和 Spring Boot 从数据库加载属性

标签 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;
    }
}

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

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

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

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

最佳答案

基本上,您需要以这种方式将依赖项作为 @Bean 方法参数:

@Configuration
public static class AppConfig {
    @Bean
    public SystemPropertiesFactoryBean systemProperties(DataSource dataSource) {
      return new SystemPropertiesFactoryBean(dataSource);
    }

    @Bean
    public DataSource dataSource() {
      //  return new data source
    }
}

关于java - 使用 Java Config 和 Spring Boot 从数据库加载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48763915/

相关文章:

java - 如果 isDisplayChangeSupported() 显示不可用,是否可以启用全屏独占模式

java - 更改宽度时,Google maps v2 fragment View 会闪烁

java - 自定义 Spring Batch 应用程序中步骤的参数

java - spring 远程映射 url

spring-boot - 使用 maven-failsafe-plugin spring-boot 1.4 进行集成测试时出现 TypeNotPresentExceptionProxy 错误

java - 在 Hybris Commerce 上的 AbstractOrder 中添加自定义值 - AddtoCartFunction

java - 如何在 Retrofit Response<List<Object>> 中访问对象的方法

java - 在 spring-kafka 中禁用连接和消费者创建

javascript - 后端仅适用于 localhost React + Springboot + docker

java - Spring Boot 无法启动 Tomcat 8