Spring Batch - 架构 Spring Batch - 环境 Spring Batch - 应用程序 以下是Spring Batch架构的图解表示。如图所示,该体系结构包含三个主要组件,即 应用程序,批处理核心 和 批处理基础结构 。 应用程序 - 该组件包含我们使用Spring Batch框架编写的所有作业和代码。 批处理核心 - 此组件包含控制和启动批处理作业所需的所有API类。 批处理基础结构 - 此组件包含应用程序和批处理核心组件使用的读取器,编写器和服务。 Spring Batch的组件 下图显示了Spring Batch的不同组件以及它们如何相互连接。 Job 在Spring Batch应用程序中,作业是要执行的批处理。它从头到尾不间断地运行。此作业进一步分为步骤(或作业包含步骤)。 我们将使用XML文件或Java类在Spring Batch中配置作业。以下是Spring Batch中作业的XML配置。 <job id = "jobid"> <step id = "step1" next = "step2"/> <step id = "step2" next = "step3"/> <step id = "step3"/> </job> 在<job> </ job>标记内配置批处理作业。它有一个名为 id 的属性。在这些标签中,我们定义了步骤的定义和顺序。 Restartable - 通常,当一个作业正在运行时,我们尝试再次启动它,这被认为是 restart ,它将再次启动。为避免这种情况,您需要将 restartable 值设置为 false ,如下所示。 <job id = "jobid" restartable = "false" > </job> Step Step 是其中包含必要的信息以定义并执行作业(其一部分)的作业的一个独立部分。 如图中所示,每个步骤由ItemReader,ItemProcessor(可选)和ItemWriter组成。 作业可能包含一个或多个步骤 。 Readers, Writers和Processors 一个 item reader 数据读入来自特定源的一个Spring批量应用,而一个 item writer 从Spring批处理应用到特定目的地写入数据。 一个 Item processor 是包含其处理读入弹簧批次的数据的处理代码的类。如果应用程序读取 “n” 条记录,则处理器中的代码将在每条记录上执行。 当没有给出读写器时, tasklet 充当SpringBatch的处理器。它只处理一个任务。例如,如果我们正在编写一个简单的步骤,我们从MySQL数据库读取数据并处理它并将其写入文件(平面),那么我们的步骤使用 一个 reader 从MySQL数据库中读取。 一个 writer ,其写入到一个平面文件。 一个 custom processor ,按照我们的愿望处理数据。 <job id = "helloWorldJob"> <step id = "step1"> <tasklet> <chunk reader = "mysqlReader" writer = "fileWriter" processor = "CustomitemProcessor" ></chunk> </tasklet> </step> </ job> Spring Batch提供了很多 readers 和 writers 。使用这些预定义的类,我们可以为它们定义bean。我们将在接下来的章节中更详细地讨论 readers 和 writers 。 JobRepository Spring Batch中的作业存储库为JobLauncher,Job和Step实现提供创建,检索,更新和删除(CRUD)操作。我们将在XML文件中定义一个作业存储库,如下所示。 <job-repository id = "jobRepository"/> 除了 id 之外,还有一些选项(可选)可用。以下是具有所有选项及其默认值的作业存储库的配置。 <job-repository id = "jobRepository" data-source = "dataSource" transaction-manager = "transactionManager" isolation-level-for-create = "SERIALIZABLE" table-prefix = "BATCH_" max-varchar-length = "1000"/> 内存存储库 - 如果您不想在数据库中保留Spring Batch的域对象,可以配置jobRepository的内存中版本,如下所示。 <bean id = "jobRepository" class = "org.springframework.batch.core.repository.support.MapJobRepositoryFactoryBean "> <property name = "transactionManager" ref = "transactionManager"/> </bean> JobLauncher JobLauncher是一个使用 给定参数集 启动Spring Batch作业的接口。 SampleJoblauncher 是实现 JobLauncher 接口的类。以下是JobLauncher的配置。 <bean id = "jobLauncher" class = "org.springframework.batch.core.launch.support.SimpleJobLauncher"> <property name = "jobRepository" ref = "jobRepository" /> </bean> JobInstance 一个 JobIinstance 代表工作的逻辑运行; 它是在我们开始工作时创建的。每个作业实例由作业名称和运行时传递给它的参数区分。 如果JobInstance执行失败,则可以再次执行相同的JobInstance。因此,每个JobInstance可以有多个作业执行。 JobExecution和StepExecution JobExecution和StepExecution是作业/步骤执行的表示。它们包含作业/步骤的运行信息,例如开始时间(作业/步骤),结束时间(作业/步骤)。 Spring Batch - 环境 Spring Batch - 应用程序