Spring Batch架构
以下是Spring Batch体系结构的图示。 如图中所示,该体系结构包含三个主要组件,即应用程序(Application),批核(Batch Core)和批处理基础架构(Batch Infrastructure)。
- 应用程序 - 此组件包含所有作业和使用Spring Batch框架编写的代码。
- 批核 - 该组件包含控制和启动批作业所需的所有API类。
- 批处理基础结构 - 此组件包含应用程序和批处理核心组件使用的读取器,写入器和服务。
Spring Batch的组件
下图显示了Spring Batch的不同组件以及它们如何相互连接。
作业
在Spring Batch应用程序中,作业是要执行的批处理过程。 它从头至尾无间断运行。 作业进一步分为几个步骤(或一个作业包含的步骤)。
我们将使用XML文件或Java类在Spring Batch中配置作业。 以下是Spring批处理作业的XML配置。
<job id = "jobid"> <step id = "step1" next = "step2"/> <step id = "step2" next = "step3"/> <step id = "step3"/> </job>
批处理作业在标记<job> </ job>
中配置。 它有一个名称为id
的属性。 在这些标签中,我们定义了步骤的定义和顺序。
可重新启动 - 通常,当作业正在运行时,我们尝试再次启动它,这被认为是重新启动,并且会重新启动。 为避免这种情况,您需要将restartable
的值设置为false
,如下所示。
<job id = "jobid" restartable = "false" > </job>
步骤
步骤是作业的独立部分,其中包含定义和执行作业(其一部分)的必要信息。
如图所示,每个步骤由ItemReader
,ItemProcessor
(可选)和ItemWriter
组成。作业可能包含一个或多个步骤。
读取器,写入器和处理者
项目读取器将数据从特定源代码读取到Spring Batch应用程序中,而项目写入器将数据从Spring Batch应用程序写入特定目标。
Item处理器是一个包含处理代码的类,该代码处理读入spring批处理的数据。 如果应用程序读取“n”
个记录,则处理器中的代码将在每条记录上执行。
当没有读取器和写入器时,有一个tasklet
充当SpringBatch的处理器。 它只处理一个任务。 例如,假设我们正在用一个简单的步骤来写一份作业,从MySQL数据库读取数据并处理它并将其写入文件(平面),那么使用的步骤如下 -
- 从MySQL数据库读取的读取器。
- 一个写入文件的写入器。
- 根据意愿定制处理器来处理数据。
<job id = "helloWorldJob"> <step id = "step1"> <tasklet> <chunk reader = "mysqlReader" writer = "fileWriter" processor = "CustomitemProcessor" ></chunk> </tasklet> </step> </ job>
Spring Batch提供了一长串读取器和写入器。 使用这些预定义的类,可以为它们定义bean。 我们将在接下来的章节中更详细地讨论读取器和写入器。
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和StepExecutionJobExecution
和StepExecution
是执行作业/步骤的代表。 它们包含作业/步骤的运行信息,例如(作业/步骤)的开始时间,(作业/步骤的)结束时间。
上一篇:Spring Batch开发环境
下一篇:Spring Batch应用程序
- Java教程
- Vim教程
- Swing教程
- Spring教程
- Spring Web Services教程
- Spring MVC教程
- Spring JDBC教程
- Spring Cloud教程
- Spring Boot教程
- Spring Boot CLI教程
- Spring Batch教程
- Spring AOP教程
- PDFBox教程
- JSP教程
- JSF教程
- JPA教程
- Java面向对象设计
- Java设计模式
- Java虚拟机教程
- Java泛型教程
- Java正则表达式教程
- Java数据类型教程
- Java并发编程教程
- Java密码学教程
- Java多线程教程
- Java国际化(i18n)教程
- JavaFX教程
- Java9教程
扫描二维码
程序员编程王