【发布时间】:2014-10-21 19:49:28
【问题描述】:
我正在尝试在 Spring Batch 中配置几个数据源。在启动时,Spring Batch 抛出以下异常:
To use the default BatchConfigurer the context must contain no more thanone DataSource, found 2
批处理配置中的片段
@Configuration
@EnableBatchProcessing
public class BatchJobConfiguration {
@Primary
@Bean(name = "baseDatasource")
public DataSource dataSource() {
// first datasource definition here
}
@Bean(name = "secondaryDataSource")
public DataSource dataSource2() {
// second datasource definition here
}
...
}
不知道为什么我会看到这个异常,因为我已经看到了一些基于 xml 的 Spring 批处理配置,它声明了多个数据源。我正在使用 Spring Batch 核心版本 3.0.1.RELEASE 和 Spring Boot 版本 1.1.5.RELEASE。任何帮助将不胜感激。
【问题讨论】:
-
使用 xml 你必须明确 Spring Batch 使用哪个数据源。如果您没有使用基于 Java 的配置显式声明它,它将尝试检测数据源是否工作,这仅在检测到单个数据源的情况下才有效。您可以尝试使用
@Primary注释用于批处理的那个。否则,您可以构造一个DefaultBatchConfigurer,它需要一个数据源作为构造参数并将其传递给使用。 -
我已经尝试使用@Primary,但它不起作用,我将尝试使用 DefaultBatchConfigurer。
-
在自动装配注释的情况下,bean 是“按类型”注入的。如果同一类型的对象中存在任何冲突,则“按名称”连接 bean。
标签: java spring datasource spring-batch