现在有许多应用程序都需要批量处理,比如: (1)自动,复杂地处理大量信息,无需用户交互即可最有效地进行处理 (2)定期应用非常大的数据集重复处理复杂的业务规则 (3)从内部和外部系统接收的信息的集成,需要格式化,验证和以事务方式进行处理,记录到系统中 遇到上述场景,就可以考虑SpringBatch了
一、Spring Batch是什么
Spring Batch是一个轻量级,全面的批处理框架,旨在开发对企业系统日常运营至关重要的强大批处理应用程序,是Spring提供的一个数据处理框架,其处理过程如下 
二、使用场景
1、从数据库,文件或队列中读取大量记录 2、以某种方式处理数据 3、以修改后的形式写回数据
三、Spring Batch架构
Spring Batch有三个重要组成部分:应用层、核心层、基础架构层 
1、Application
应用层包含所有的批处理作业,通过Spring框架管理程序员自定义的代码。
2、Batch Core
核心层包含了Batch启动和控制所需要的核心类,如:JobLauncher、Job和step等。 应用层和核心层建立在基础构架层之上
3、Batch Infrastructure
基础构架层提供共通的读(ItemReader)、写(ItemWriter)、和服务(如RetryTemplate:重试模块。可以被应用层和核心层使用),
四、作业的配置和运行
总体体系结构 
1、JobLauncher
启动任务,作业将在月JobLauncher相同的线程中执行 当作业运行时,会创建一个JobInstance,JobInstance代表作业的一次逻辑运行,可通过作业名称和传递给作业的识别性参数来标识。 JobExecution是真正地运行作业的一次尝试,每次尝试运行JobInstance,都会创建新的JobExecution 
JobInstance只有一次能成功执行,因为JobInstance通过作业名称和传入的识别性参数来标识,所以使用相同的识别性参数只能运行一次
2、Job
一个具体的任务,一个Job中可有多个Step
3、Step
一个具体执行步骤,其包括ItemReader、ItemProcessor、ItemWriter ItemReader用来读取数据,ItemProcessor用来处理数据,ItemWriter用来写数据 
4、JobRepository
记录任务状态信息 Spring Batch会默认在数据库里面创建一些batch相关的表,来记录所有job/step运行的状态和结果(表有:batch_job_execution、batch_job_execution_context、batch_job_execution_params、batch_job_execution_seq、batch_job_instance、batch_job_seq、batch_step_execution、batch_step_execution_context、batch_step_execution_seq)
以上,就是对Spring Batch的一个整体认识 感谢您的阅读~
|