配置文件上的@ConditionalOnProperty没有加载Bean

时间:2019-06-24 17:48:47

标签: java spring spring-boot

设置use.liquibase为true时,我想加载liquibase属性并启动H2数据库。在所有其他情况下,我想转到相应的RDBMS实例。 我有这样的代码

@PropertySource("liquibase.properties")
@ConditionalOnProperty(value = "use.liquibase", havingValue = "true")
@Configuration
public class LiquibaseDaoConfig {

    @Bean(name = "dataSource")
    public DataSource dataSource(...) {
    //load properties from liquibase.properties
        //return H2 Datasource
    }
}

@Configuration
public class DaoConfig{
    @Bean(name = "dataSource")
    @ConditionalOnProperty(value = "use.liquibase", havingValue = "false")
    @Primary
    public DataSource dataSource(....) {
       // return Oracle Datatsource
    }

    @Bean
    public StuffDao stuffDao(DataSource dataSource) {
        return new StuffDaoImpl(dataSource);
    }
}

use.liquibase = true

我收到“ javax.sql.DataSource”类型的没有合格bean的可用错误。 我究竟做错了什么?请帮忙。

1 个答案:

答案 0 :(得分:1)

havingValue =“ false”

仅当属性值完全为 false 时,此方法才有效。对于任何其他通常可以解析为逻辑假的值(例如),它将不起作用。缺少价值。

因此,一般来说,请检查拼写错误,并检查组件扫描路径上是否有给定的配置类arr