以下是Spring Batch架构的图解表示.如图所示,该体系结构包含三个主要组件,即应用程序,批处理核心和批处理基础结构.
应用程序 : 该组件包含我们使用Spring Batch框架编写的所有作业和代码.
Batch Core : 此组件包含控制和启动批处理作业所需的所有API类.
批处理基础结构 : 此组件包含应用程序和批处理核心组件使用的读取器,编写器和服务.
Spring Batch的组件
下图显示了Spring Batch的不同组件以及它们如何相互连接.
作业
在Spring Batch应用程序中,作业是要执行的批处理.它从头到尾不间断地运行.此作业进一步分为步骤(或作业包含步骤).
我们将使用XML文件或Java类在Spring Batch中配置作业.以下是Spring Batch中作业的XML配置.
批量作业在标签< job>中配置.它有一个名为 id 的属性.在这些标签中,我们定义了步骤的定义和顺序.
可重新启动 : 通常,当作业正在运行并且我们尝试再次启动时,将其视为重新启动,它将再次启动.为避免这种情况,您需要将可重新启动的值设置为 false ,如下所示.
步骤
步骤是包含必要工作的独立部分用于定义和执行作业的信息(其部分).
如图中所示,每个步骤由ItemReader,ItemProcessor(可选)和ItemWriter组成. 作业可能包含一个或多个步骤.
读者,作家和处理者
项目阅读器从特定来源将数据读入Spring Batch应用程序,而项目编写器将数据从Spring Batch应用程序写入特定目的地.
项目处理器是一个类,它包含处理读入弹簧批次的数据的处理代码.如果应用程序读取"n"记录,则处理器中的代码将在每条记录上执行.
如果没有给出读者和作者,则 tasklet 充当SpringBatch的处理器.它只处理一个任务.例如,如果我们正在编写一个简单的步骤,我们从MySQL数据库读取数据并处理它并将其写入文件(平面),那么我们的步骤使用 :
从MySQL数据库读取的阅读器.
写入平面文件的编写器.
按自定义处理器处理数据我们的愿望.
Spring Batch提供了一长串读者和作家.使用这些预定义的类,我们可以为它们定义bean.我们将在接下来的章节中更详细地讨论读者和作家.
JobRepository
Spring Batch中的作业存储库为JobLauncher,Job和Step实现提供创建,检索,更新和删除(CRUD)操作.我们将在XML文件中定义一个作业存储库,如下所示.
除 id 外,还有一些选项(可选)可用.以下是具有所有选项及其默认值的作业存储库的配置.
内存存储库 : 如果您不想在数据库中保留Spring Batch的域对象,可以配置jobRepository的内存版本,如下所示.
JobLauncher
JobLauncher是一个使用给定参数集来启动Spring Batch作业的接口. SampleJoblauncher 是实现 JobLauncher 接口的类.以下是JobLauncher的配置.
JobInstance
JobIinstance 表示作业的逻辑运行;它是在我们开始工作时创建的.每个作业实例由作业名称和运行时传递给它的参数区分.
如果JobInstance执行失败,则可以再次执行相同的JobInstance.因此,每个JobInstance可以有多个作业执行.
JobExecution和StepExecution
JobExecution和StepExecution是作业/步骤执行的表示.它们包含作业/步骤的运行信息,例如开始时间(作业/步骤),结束时间(作业/步骤).