持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情
这篇文章我们主要介绍一下spring batch。
spring batch 的介绍
spring batch 一个主要用于数据批处理的框架。有很多业务场景会涉及到批处理的操作,如:短信通知、月末计算、数据批量插入等等。一般都是基于时间的事件,可以被用户触发然后执行。
一般用户会制定一个比较复杂的规则,在一定条件下应用这个规则以达到某种目的。例如在每个月固定日期为员工发放福利现金等等。
spring batch 是一个轻量级的批处理框架,结合了Spring Framework 的一些特性,如:建立于POJO 的开发方法之上等等。
spring batch 的架构
首先我们先思考,一个经典的批处理程序应该包含的步骤是什么。一般来说,就是分为三步:输入、处理、输出。所以对于Spring batch 的架构的基本思想也是这三步:
- 从某种存储介质中读取出来大量数据
- 按照要求处理数据
- 将处理完成的数据持久化(如写回到db、队列里等等)
示意图如下:
对于spring batch 的构成部分来说,一般有以下几个基本概念:
- JobRepository
- JobLauncher
- Job
- Step
- ItemReader
- ItemProcessor
- ItemWriter
其关联关系如图所示:
在spring batch 框架中,JobRepository 是用来存储Job 的;而Job 是通过JobLauncher 来启动的。
在一个 job 中,可以定义很多step(步骤);在每个step 里面可以定义其专属的三件套:即ItemReader / ItemProcessor / ItemWriter。
ItemReader 的作用是读取数据;ItemProcesseor 用来处理数据;ItemWriter 的作用是将处理过后的数据写到目标位置。
总结
这篇文章的目的就是为spring batch 提供的概念性的介绍以及框架的组成结构的基本知识。让读者有个清晰且简单的认知。