You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot Batch启动失败:找不到DataSourceTransactionManager Bean

问题解决:Spring Batch启动提示缺少DataSourceTransactionManager Bean

问题原因

引入spring-boot-starter-data-jpa后,Spring Boot会自动配置JpaTransactionManager作为默认事务管理器,而非DataSourceTransactionManager。你的step1方法直接声明依赖DataSourceTransactionManager类型,导致容器无法找到对应Bean,启动失败。

解决方案(二选一即可)

方案1:使用通用事务管理器类型

将step1方法的事务管理器参数类型改为更通用的PlatformTransactionManager(JpaTransactionManager是它的子类),Spring会自动注入适配的事务管理器:

@Bean
public Step step1(JobRepository jobRepository, PlatformTransactionManager transactionManager,
                  FlatFileItemReader<MatchInput> reader, MatchDataProcessor processor, JdbcBatchItemWriter<Match> writer) {
    return new StepBuilder("step1", jobRepository)
        .<MatchInput, Match> chunk(3, transactionManager)
        .reader(reader)
        .processor(processor)
        .writer(writer)
        .build();
}

方案2:手动注册DataSourceTransactionManager Bean

在BatchConfig类中新增一个Bean定义,明确创建DataSourceTransactionManager:

@Bean
public DataSourceTransactionManager transactionManager(DataSource dataSource) {
    return new DataSourceTransactionManager(dataSource);
}

添加后,容器中就会存在DataSourceTransactionManager类型的Bean,满足step1方法的依赖需求。


内容的提问来源于stack exchange,提问作者sman03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:07:45