Spring spring

Spring中文网站 > Spring Batch > 什么是Spring Batch 如何在Spring Boot项目中集成Spring Batch
什么是Spring Batch 如何在Spring Boot项目中集成Spring Batch
发布时间:2026/03/12 16:08:34

品牌型号:联想拯救者R7000

系统:Windows 10专业版

软件版本:Spring Boot 4.0.2

在开发大型后端项目时,可能需要处理大批量数据,例如数据导入导出、报表生成、跨系统数据同步等场景,这种场景我们就可以使用Spring Batch这款批处理轻量级框架。Spring Batch是Spring生态里专门做【批量数据处理】的框架,用来处理量大、重复、定时、离线的数据任务。本文将为大家介绍什么是Spring Batch,如何在Spring Boot项目中集成Spring Batch的相关内容。

一、什么是Spring Batch

举一个Spring Batch框架的使用场景,例如学校教务处每月要做的事:

1、从Excel文件里读取全校1万名学生的期末成绩(数据量大,手动处理费时间)。

2、处理这些数据:筛选出挂科的学生、计算每个学生的总分/平均分、标记需要补考的人。

3、把处理后的结果写入学校的MySQL数据库,还生成一份Excel报表发给各学院。

Spring Batch源码
图1:Spring Batch源码

这个【批量处理全校成绩】的任务,就是Spring Batch的典型应用场景。如果不用框架,需要我们手写循环读文件、手动控制事务、处理【读一半程序崩了】的情况。用Spring Batch的话,这些“底层代码”框架都已经封装,我们只需要实现【读、算、写】的核心业务逻辑即可。

结合这个案例为大家介绍一下Spring Batch的核心参数。

Job(任务):要做的事,比如【每月处理全校成绩】就是一个Job;

Step(步骤):Job拆成的具体步骤,比如第一步读成绩、第二步算总分、第三步写数据库。

ItemReader(读数据):专门【读数据】的工具,比如读Excel或者数据库里的成绩。

ItemProcessor(处理数据):专门【处理数据】的工具,比如算总分、筛挂科学生,都是在处理数据。

ItemWriter(写数据):专门【存数据】的工具,比如把结果写入数据库/Excel。

Spring Batch核心参数
图2:Spring Batch核心参数

二、如何在Spring Boot项目中集成Spring Batch

上文为大家介绍了Spring batch的基本概念,下面我就以实际代码为大家演示一下如何在Spring Boot项目中集成Spring Batch。

1、引入依赖

创建好了Spring Boot项目的前提下,在pom.xml文件中引入Spring Batch的依赖。因为最终需要保存数据,所以需要额外引入数据库连接等依赖。不用写具体Batch版本号,Spring Boot会自动适配兼容的版本(比如Boot3对应Batch5),避免版本冲突。

引入依赖
图3:引入依赖

2、配置项

在配置batch参数时,initialize-schema有3个取值:always(每次启动都建表)、embedded(只给嵌入式数据库建表,比如H2)、never(永不建表,手动建表时用),建议使用持久化数据库时设置为always。

配置
图4:配置

此处有一个注意点,启动Spring Boot时,可能会出现SQL执行错误,报错数据库表不存在,遇到这种情况有两种解决方案。

SQL异常
图5:SQL异常

1)删除启动类上的【@EnableBatchProcessing】注解。

2)手动执行org/springframework/batch/core/schema-mysql.sql,该文件位于Jar包内。

手动执行SQL
图6:手动执行SQL

3、编写Config

1)编写Config时,使用【Configuration】注解标识配置类,【EnableBatchProcessing】标识Batch配置。

2)ItemReader读数据,此处从【resources】目录下,读【score.csv】数据。

3)ItemProcessor负责处理数据,此处计算各科成绩之和。

3)ItemWriter负责写数据,此处将计算后的数据,写入数据库。

配置类
图7:配置类

4、触发Batch任务

1)创建Step,串起【读-操作-写】全流程。比较重要的是chunk(10)参数,简单说就是【10条数据一起执行】,减少数据库连接次数,例如读1000条数据,chunk=10只需要100次提交,chunk=1要1000次,效率差10倍。如果遇到Step执行失败时,整个chunk的10条数据都会回滚,保证数据一致性。

配置Step
图8:配置Step

2)创建Job整合Step,在配置类中写Job执行代码,启动Spring Boot即可触发Batch任务,可以给Job添加时间戳参数,表示每次执行都是不同的任务。

触发Spring Batch
图9:触发Spring Batch

5、查看结果

此时为大家演示的ItemWriter是往数据库里写数据,查看数据库表即可看到数据。另外,可以在代码中编写日志,通过设置chunk参数,查看每次执行过程。

执行结果
图10:执行结果

三、总结

以上就是什么是Spring Batch,如何在Spring Boot项目中集成Spring Batch的相关内容。本文为大家介绍了Spring Batch的基本参数以及使用场景,总的来说是一款非常好用的批处理框架。还为大家介绍了在Spring Boot中集成Spring Batch的步骤,希望对你有所帮助。

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