品牌型号:联想拯救者R7000
系统:Windows 10专业版
软件版本:Spring Boot 4.0.2
很多Java初学者平时学习的都是基于【请求-响应】的Web开发,在企业级的项目中,经常会有批量任务,例如从数据库、文件或者消息队列里按批次读入数据,进行校验、转换,再一次性写出。在Spring生态中,Spring Batch就是这样一套成熟、稳定的工具,帮助我们优雅地完成这类大数据的任务。本文将为大家介绍Spring Batch 是什么样的批处理框架,怎么让Spring Batch执行批处理的相关内容。
一、Spring Batch是什么样的批处理框架
假设有一个业务需求,把当天的订单数据从一个表搬到另一个表,如果完全手写,我们就需要处理事务、分页查询、防止重复执行、记录日志和失败重试等一堆代码逻辑。如果引入Spring Batch,可以把这些重复而又复杂的通用代码包装好,把核心代放到业务逻辑,比如订单金额怎么计算、哪些订单数据要过滤掉,而不是一遍遍造轮子。

Spring Batch是一个框架,不是一个简单的工具类库,而是一整套围绕批处理的编程模型。Spring Batch主要有以下几个核心概念。
1、Job:定义批处理任务
例如:每天夜里跑一次的订单结算任务、每周日跑一次的报表汇总任务。在Spring Batch中,一个Job是由多个Step顺序或条件组合而成的整体执行单元,支持事物管理。

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

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

4、ItemReader/ItemProcessor/ItemWriter:处理数据的三大接口
ItemReader负责读数据,可以从数据库表、CSV文件、消息队列中读数据。
ItemProcessor负责处理数据,例如过滤不合格数据、计算新的字段等。
ItemWriter负责写数据,比如写到数据库另一张表、导出文件或者调用接口。

二、怎么让Spring Batch执行批处理
了解了Spring Boot是什么之后,接下来我就为大家介绍一下怎么执行Spring Batch,首先我们需要进行依赖配置、定义Job与Step、编写读/处理/写逻辑、选择合适的触发方式。我们可以理解为“先搭舞台,再安排流程,最后决定什么时候开演”,以下是具体步骤。
1、引入依赖与基础配置
在Maven项目中,可以在pom.xml中加入Spring Batch相关依赖,一般是【spring-boot-starter-batch】,Spring Boot会自动配置很多默认组件,比如JobRepository、JobLauncher 等。

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

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

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

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