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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:52:07