什么是Spring Batch

247 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

这篇文章我们主要介绍一下spring batch。

spring batch 的介绍

spring batch 一个主要用于数据批处理的框架。有很多业务场景会涉及到批处理的操作,如:短信通知、月末计算、数据批量插入等等。一般都是基于时间的事件,可以被用户触发然后执行。

一般用户会制定一个比较复杂的规则,在一定条件下应用这个规则以达到某种目的。例如在每个月固定日期为员工发放福利现金等等。

spring batch 是一个轻量级的批处理框架,结合了Spring Framework 的一些特性,如:建立于POJO 的开发方法之上等等。

spring batch 的架构

首先我们先思考,一个经典的批处理程序应该包含的步骤是什么。一般来说,就是分为三步:输入、处理、输出。所以对于Spring batch 的架构的基本思想也是这三步:

  • 从某种存储介质中读取出来大量数据
  • 按照要求处理数据
  • 将处理完成的数据持久化(如写回到db、队列里等等)

示意图如下:

image.png


对于spring batch 的构成部分来说,一般有以下几个基本概念:

  1. JobRepository
  2. JobLauncher
  3. Job
  4. Step
  5. ItemReader
  6. ItemProcessor
  7. ItemWriter

其关联关系如图所示:

Screen Shot 2022-10-23 at 01.07.19.png

在spring batch 框架中,JobRepository 是用来存储Job 的;而Job 是通过JobLauncher 来启动的。

在一个 job 中,可以定义很多step(步骤);在每个step 里面可以定义其专属的三件套:即ItemReader / ItemProcessor / ItemWriter。

ItemReader 的作用是读取数据;ItemProcesseor 用来处理数据;ItemWriter 的作用是将处理过后的数据写到目标位置。

总结

这篇文章的目的就是为spring batch 提供的概念性的介绍以及框架的组成结构的基本知识。让读者有个清晰且简单的认知。