Spring Batch是一个用于创建健壮的批处理应用程序的完整框架。您可以创建可重用的函数来处理大量数据或任务,通常称为批量处理。
Spring Batch提供了许多有用的功能,例如:
•日志记录和跟踪
•事务管理
•作业统计
•管理流程; 例如,通过重新启动作业,跳过步骤和资源管理
•管理Web控制台
该框架旨在管理大量数据并使用分区功能实现高性能批处理。本文将介绍一个简单的项目,解释Spring Batch的每个主要组件。
如Spring Batch文档中所述,使用该框架的最常见方案如下:
•定期提交批处理
•并行处理作业的并发批处理
•分阶段,企业消息驱动处理
•大型并行批处理
•手动或故障后的计划重新启动
•依赖步骤的顺序处理(扩展到工作流程驱动的批处理)
•部分处理:跳过记录(例如,回滚时)
•整批事务:对于批量小或现有存储过程的情况/脚本
在企业应用程序中,处理数百万条记录(数据)或从源读取的需求非常普遍。此源可能包含具有多个记录(如CSV或TXT文件)或数据库表的大型文件。在每个记录中,通常应用一些业务逻辑,执行验证或转换,并完成任务,将结果写入另一种输出格式(例如,数据库或文件)。
Spring Batch提供了一个完整的框架来实现这种要求,最大限度地减少人为干预。
您将查看Spring批处理的基本概念:
•一个Job作业封装批处理过程,并且必须包含一个或多个Step步骤。每个步骤可以按顺序运行,并行运行或分区。
•Step步骤是Job作业的序列组成部分。
•JobLauncher负责执行作业的启动执行,JobExecution是一个Job的运行上下文。
•JobRepository是JobExecution的元数据存储库。
下面使用Spring Batch创建一个简单的作业示例,以了解它的工作原理。
首先,创建一个简单的Java项目并包含spring-batch依赖项。为此,使用其初始化程序(https://start.spring.io)创建Spring Boot应用程序。
添加Spring Batch的依赖项。您可以通过在依赖项框内的搜索栏中键入Spring Batch,然后单击Enter来完成此操作。带有单词Batch的绿色框将显示在所选的依赖项部分中。完成此操作后,单击Generate Project按钮。
pom.xml:
<dependency> |
配置嵌入数据源。出于测试目的,请使用HSQL(http://hsqldb.org/):
<dependency> |
现在,您需要将@EnabledBatchProcessing和@Configuration注释添加到应用程序:
@SpringBootApplication |
接下来,在这个应用入口类中使用JobBuildFactory类和一个任务进程设置第一个作业,使用StepBuilderFactory类:
@Autowired |
然后,Job方法将启动它:
@Bean |
创建作业后,将新任务(步骤)添加到作业:
@Bean |
以下代码显示了应用程序类的完整代码:
@EnableBatchProcessing |
为了检查一切正常,请运行该应用程序。为此,请在命令行上执行以下命令:
mvnspring-boot:run
或者,您可以通过运行Maven来构建应用程序:
mvn install
运行这个构建的jar:
java -jar target/simple-batch-0.0.1-SNAPSHOT.jar
注意控制台输出。为此,运行名为jobPackPub1的作业并将该bean作为stepPackPub1.Now执行,更详细地查看以下步骤背后的组件:
•ItemReader表示检索步骤的输入
•ItemProcessor表示项目的业务处理
•ItemWriter表示步骤的输出
下图:
现在,您可以使用ItemReader,ItemProcessor和ItemWriter完成示例。可以通过使用这些组件实现Spring Batch管道和过滤器架构。
以在此处找到本文的源代码