获取异常'java.lang.IllegalStateException:当定义了多个数据源时,预期一个数据源并找到2'

时间:2016-11-19 20:09:41

标签: spring spring-boot spring-batch spring-cloud-task

当我在spring spring任务应用程序中定义多个数据源时,它会抛出异常。这就是我定义数据源的方式

@Primary
@Bean(name="datasource1")
@ConfigurationProperties(prefix="spring.datasource")
public javax.sql.DataSource primaryDataSource() {
    return  DataSourceBuilder.create().build();
}

@Bean(name="datasource2")
@ConfigurationProperties(prefix="spring.datasource1")
public javax.sql.DataSource primaryDataSource1() {
    return  DataSourceBuilder.create().build();
}

@Bean
public TaskConfigurer taskConfigurer() {
    return new DefaultTaskConfigurer(primaryDataSource());
}

我已经看到了建立@Primary的建议,如上所述定义TaskConfigurer,但它们都没有工作。有没有人遇到过这种问题?

谢谢, 尼尔

2 个答案:

答案 0 :(得分:2)

您将需要覆盖侦听器。它就像其他autoconfig周围任务一样,不知道在定义多个数据源时要使用的数据源。我在未来的版本中创建了一个问题来解决这个问题:https://github.com/spring-cloud/spring-cloud-task/issues/252

答案 1 :(得分:0)

您需要覆盖DefaultTaskConfigurer

@Configuration
public class BatchConfigurer extends DefaultTaskConfigurer
{

    public BatchConfigurer(@Qualifier("batchDataSource") DataSource dataSource) 
    {
        super(dataSource);
    }

}