Spring spring

Spring中文网站 > Spring Batch > Spring Batch是什么样的批处理框架 怎么让Spring Batch执行批处理
Spring Batch是什么样的批处理框架 怎么让Spring Batch执行批处理
发布时间:2026/03/09 10:30:16

品牌型号:联想拯救者R7000

系统:Windows 10专业版

软件版本:Spring Boot 4.0.2

很多Java初学者平时学习的都是基于【请求-响应】的Web开发,在企业级的项目中,经常会有批量任务,例如从数据库、文件或者消息队列里按批次读入数据,进行校验、转换,再一次性写出。在Spring生态中,Spring Batch就是这样一套成熟、稳定的工具,帮助我们优雅地完成这类大数据的任务。本文将为大家介绍Spring Batch 是什么样的批处理框架,怎么让Spring Batch执行批处理的相关内容。

一、Spring Batch是什么样的批处理框架

假设有一个业务需求,把当天的订单数据从一个表搬到另一个表,如果完全手写,我们就需要处理事务、分页查询、防止重复执行、记录日志和失败重试等一堆代码逻辑。如果引入Spring Batch,可以把这些重复而又复杂的通用代码包装好,把核心代放到业务逻辑,比如订单金额怎么计算、哪些订单数据要过滤掉,而不是一遍遍造轮子。

Spring Batch
图1:Spring Batch

Spring Batch是一个框架,不是一个简单的工具类库,而是一整套围绕批处理的编程模型。Spring Batch主要有以下几个核心概念。

1、Job:定义批处理任务

例如:每天夜里跑一次的订单结算任务、每周日跑一次的报表汇总任务。在Spring Batch中,一个Job是由多个Step顺序或条件组合而成的整体执行单元,支持事物管理。

Job
图2:Job

2、Step:Job中的一个步骤

一个Step一般完成一个工作,比如从CSV文件读取原始订单、过滤无效订单、把结果写入数据库。多个Step可以按顺序执行,也可以根据上一步的执行结果继续执行。

Step
图3:Step

3、Chunk:Spring Batch的处理方式

并不是一次把所有数据读进内存,而是读N条、处理N条、写N条,我们可以根据内存大小设置chunk的大小,例如设置chunk大小为100,就是每100条数据为一批进行提交。

chunk参数
图4:chunk参数

4、ItemReader/ItemProcessor/ItemWriter:处理数据的三大接口

ItemReader负责读数据,可以从数据库表、CSV文件、消息队列中读数据。

ItemProcessor负责处理数据,例如过滤不合格数据、计算新的字段等。

ItemWriter负责写数据,比如写到数据库另一张表、导出文件或者调用接口。

处理数据
图5:处理数据

二、怎么让Spring Batch执行批处理

了解了Spring Boot是什么之后,接下来我就为大家介绍一下怎么执行Spring Batch,首先我们需要进行依赖配置、定义Job与Step、编写读/处理/写逻辑、选择合适的触发方式。我们可以理解为“先搭舞台,再安排流程,最后决定什么时候开演”,以下是具体步骤。

1、引入依赖与基础配置

在Maven项目中,可以在pom.xml中加入Spring Batch相关依赖,一般是【spring-boot-starter-batch】,Spring Boot会自动配置很多默认组件,比如JobRepository、JobLauncher 等。

引入依赖
图6:引入依赖

2、开启批处理支持

在配置类上添加相应的批处理注解【@EnableBatchProcessing】,告诉Spring这个配置类是Spring Batch的配置类,这一步相当于把Batch的基础设施全部初始化好。

开启注解
图7:开启注解

3、准备数据源和表

Spring Batch需要数据库来保存Job、Step的执行元数据,一般会配好数据源(application.yml),并执行官方提供的SQL脚本,自动创建相关表,这些表不需要理解,但要知道它们负责记录Job的运行历史和状态。

Batch脚本
图8:Batch脚本

4、触发Spring Batch

根据具体的业务场景写好Job和Step之后(可以参考上文截图代码),还需要触发Spring Batch,支持多种触发方式,例如接口触发、定时任务触发,在编辑调试阶段还可以用测试类触发,以下为定时任务触发的参考代码。

定时任务触发Spring Batch
图9:定时任务触发Spring Batch

三、总结

以上就是Spring Batch是什么样的批处理框架,怎么让Spring Batch执行批处理的相关内容。本文为大家介绍了Spring Batch的基础概念,总的来说是一款Spring封装好的批处理框架,并且为大家介绍了执行Spring Batch的步骤,从配置到触发,希望对你有所帮助。

读者也访问过这里:
180 1563 6924