📜  Spring Batch-体系结构

📅  最后修改于: 2020-11-11 06:48:35             🧑  作者: Mango


以下是Spring Batch体系结构的示意图。如图所示,该体系结构包含三个主要组件,即应用程序,批处理核心批处理基础结构

建筑

应用程序-该组件包含所有作业和我们使用Spring Batch框架编写的代码。

批处理核心-该组件包含控制和启动批处理作业所需的所有API类。

批处理基础结构-此组件包含应用程序和批处理核心组件使用的读取器,编写器和服务。

Spring Batch的组成

下图显示了Spring Batch的不同组件以及它们如何相互连接。

组件

工作

在Spring Batch应用程序中,作业是要执行的批处理过程。它从头到尾无间断运行。该作业被进一步分为步骤(或一个作业包含步骤)。

我们将使用XML文件或Java类在Spring Batch中配置作业。以下是Spring Batch中Job的XML配置。

 
    
    
    

在标签 中配置了一个批处理作业。它具有名为id的属性。在这些标签中,我们定义步骤的定义和顺序。

可重新启动-通常,当作业正在运行时,我们尝试重新启动它,这被视为重新启动,并且它将重新启动。为避免这种情况,您需要将可重启值设置为false ,如下所示。




步骤是作业的独立部分,其中包含定义和执行作业的必要信息(其部分)。

如图所示,每个步骤都由ItemReader,ItemProcessor(可选)和ItemWriter组成。一项工作可能包含一个或多个步骤

读者,作家和处理器

项目读取器将数据从特定来源读取到Spring Batch应用程序中,而项目写入器将数据从Spring Batch应用程序写入特定目的地中。

Item处理器是一个类,其中包含处理代码,用于处理读取到Spring批处理中的数据。如果应用程序读取“ n”条记录,则处理器中的代码将在每条记录上执行。

如果没有给出读写器,则一个tasklet充当SpringBatch的处理器。它仅处理单个任务。例如,如果我们要编写一个包含简单步骤的作业,即从MySQL数据库读取数据并将其处理并将其写入文件(平面),则该步骤将使用-

  • 从MySQL数据库读取的读取

  • 写入平面文件的作家

  • 一个定制处理器,可以按照我们的意愿处理数据。

 
    
       
          
       
    
 job>

Spring Batch提供了很多读者作家。使用这些预定义的类,我们可以为它们定义bean。在接下来的章节中,我们将更详细地讨论读者作家

JobRepository

Spring Batch中的Job资料库为JobLauncher,Job和Step实现提供创建,检索,更新和删除(CRUD)操作。我们将在XML文件中定义作业存储库,如下所示。

 

除了id之外,还有其他一些选项(可选)。以下是带有所有选项及其默认值的作业库配置。


内存中的存储库-如果您不想将Spring Batch的域对象保留在数据库中,则可以配置jobRepository的内存中版本,如下所示。


   

JobLauncher

JobLauncher是一个接口,可以使用给定的参数启动Spring Batch作业。 SampleJoblauncher是实现JobLauncher接口的类。以下是JobLauncher的配置。

 
    

JobInstance

JobInstance表示作业的逻辑运行;它是在我们运行作业时创建的。每个作业实例通过作业的名称和运行时传递给它的参数来区分。

如果JobInstance执行失败,则可以再次执行相同的JobInstance。因此,每个JobInstance可以具有多个作业执行。

JobExecution和StepExecution

JobExecution和StepExecution是作业/步骤执行的表示。它们包含作业/步骤的运行信息,例如开始时间(作业/步骤),结束时间(作业/步骤)。