Spring Batch项目Autowire报错:找不到JobBuilderFactory等Bean
解决方案
1. 核心原因:API版本变更
Spring Batch 5.x(搭配Spring Boot 3.x及以上)已移除JobBuilderFactory和StepBuilderFactory,这两个类在4.x版本就已标记为过时,你的报错大概率是因为使用了高版本的Spring Batch。
2. 适配新版本的写法
改用JobBuilder和StepBuilder直接构建,依赖JobRepository和PlatformTransactionManager完成配置,示例代码如下:
import org.springframework.batch.core.Job; import org.springframework.batch.core.Step; import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; import org.springframework.batch.core.job.builder.JobBuilder; import org.springframework.batch.core.repository.JobRepository; import org.springframework.batch.core.step.builder.StepBuilder; import org.springframework.batch.repeat.RepeatStatus; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.transaction.PlatformTransactionManager; @Configuration @EnableBatchProcessing public class BatchConfiguration { @Bean public Job sampleJob(JobRepository jobRepository, Step sampleStep) { return new JobBuilder("sampleJob", jobRepository) .start(sampleStep) .build(); } @Bean public Step sampleStep(JobRepository jobRepository, PlatformTransactionManager transactionManager) { return new StepBuilder("sampleStep", jobRepository) .tasklet((contribution, chunkContext) -> { // 自定义任务逻辑 System.out.println("执行Spring Batch任务"); return RepeatStatus.FINISHED; }, transactionManager) .build(); } }
3. 若要沿用旧版API(不推荐)
如果教程基于Spring Batch 4.x及以下,需在pom.xml中锁定对应版本(搭配Spring Boot 2.x):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-batch</artifactId> <version>2.7.14</version> </dependency>
此时原代码的@Autowired注入就能正常生效,因为@EnableBatchProcessing会自动注册JobBuilderFactory和StepBuilderFactory的Bean。
4. IDE误提示处理
如果是IntelliJ缓存导致的虚假提示,可执行:
- 点击
File -> Invalidate Caches...,选择Invalidate and Restart重启IDE - 右键项目选择
Maven -> Reload Project重新加载依赖
内容的提问来源于stack exchange,提问作者Calu River
相关产品推荐
相关产品推荐

