品牌型号:联想拯救者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的典型应用场景。如果不用框架,需要我们手写循环读文件、手动控制事务、处理【读一半程序崩了】的情况。用Spring Batch的话,这些“底层代码”框架都已经封装,我们只需要实现【读、算、写】的核心业务逻辑即可。
结合这个案例为大家介绍一下Spring Batch的核心参数。
Job(任务):要做的事,比如【每月处理全校成绩】就是一个Job;
Step(步骤):Job拆成的具体步骤,比如第一步读成绩、第二步算总分、第三步写数据库。
ItemReader(读数据):专门【读数据】的工具,比如读Excel或者数据库里的成绩。
ItemProcessor(处理数据):专门【处理数据】的工具,比如算总分、筛挂科学生,都是在处理数据。
ItemWriter(写数据):专门【存数据】的工具,比如把结果写入数据库/Excel。

二、如何在Spring Boot项目中集成Spring Batch
上文为大家介绍了Spring batch的基本概念,下面我就以实际代码为大家演示一下如何在Spring Boot项目中集成Spring Batch。
1、引入依赖
创建好了Spring Boot项目的前提下,在pom.xml文件中引入Spring Batch的依赖。因为最终需要保存数据,所以需要额外引入数据库连接等依赖。不用写具体Batch版本号,Spring Boot会自动适配兼容的版本(比如Boot3对应Batch5),避免版本冲突。

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

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

1)删除启动类上的【@EnableBatchProcessing】注解。
2)手动执行org/springframework/batch/core/schema-mysql.sql,该文件位于Jar包内。

3、编写Config
1)编写Config时,使用【Configuration】注解标识配置类,【EnableBatchProcessing】标识Batch配置。
2)ItemReader读数据,此处从【resources】目录下,读【score.csv】数据。
3)ItemProcessor负责处理数据,此处计算各科成绩之和。
3)ItemWriter负责写数据,此处将计算后的数据,写入数据库。

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

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

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

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