内容来自《Spring Batch 批处理框架》,作者:刘相。

1.JobLauncher

  JobLauncher(作业调度器)是SpringBatch框架提供的运行Job的能力。用过给定的JobName和JobParameters,可以通过JobLauncher执行Job。通过JobLauncher可以在Java程序中调用批处理任务,也可以在通过命令或者其他的框架(如定时调度框架Quartz)中调用批处理任务。

  JobLauncher接口:

public interface JobLauncher {
public JobExecution run(Job job, JobParameters jobParameters) throws JobExecutionAlreadyRunningException,
JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException;
}

  SpringBatch提供了JobLauncher的简单的实现了类:SimpleJobLauncher。

public class SimpleJobLauncher implements JobLauncher, InitializingBean {

    protected static final Log logger = LogFactory.getLog(SimpleJobLauncher.class);

    private JobRepository jobRepository;

    private TaskExecutor taskExecutor;
@Override
public JobExecution run(final Job job, final JobParameters jobParameters)
throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException,
JobParametersInvalidException {
//逻辑处理
}
public void setJobRepository(JobRepository jobRepository) {
this.jobRepository = jobRepository;
} public void setTaskExecutor(TaskExecutor taskExecutor) {
this.taskExecutor = taskExecutor;
} @Override
public void afterPropertiesSet() throws Exception {
//逻辑处理
}
}

2.ItemReader

  ItemReader是Step中对资源的读处理,SpringBatch框架提供了多种读的实现类共我们使用。

  IteamReader接口:

public interface ItemReader<T> {
T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;
}

  其实现类和介绍:

SpringBatch框架提供的ItemReader组件
ItemReader 说明
ListItemReader 读取List类型数据,只能读取一次
ItemReaderAdapter ItemReader适配器,可以服用现有的读操作
FlatFileItemReader 读Flat类型文件
StaxEventItemReader 读XML类型的文件
JdbcCursorItemReader 基于JDBC游标方式读取数据库
HibernateCursorItemReader 基于Hibernate游标方式读取数据库
StoredProcedureItemReader 基于存储过程读取数据库
IbatisPagingItemReader 基于Ibatis分页读取数据库
JpaPagingItemReader 基于Jpa方式分页读取数据库
JdbcPagingItemReader 基于JDBC方式分页读取数据库
HibernatePagingItemReader 基于Hibernate方式分页读取数据库
JmsItemReader 读取JMS队列
IteratorItemReader 迭代方式读组件
MultiResourceItemReader 多文件读组件
MongoItemReader 基于分布式文件存储的数据库MongoDB读组件
Neo4jItemReader 面向网络的数据库Neo4j读组件
ResourcesItemReader 基于批量资源的读组件,每次读取返回资源对象
AmqpItemReader 读取AMQP队列组件
RepositoryItemReader 基于SpringData的读组件

3.ItemProcessor

  ItemProcessor表示对读取的数据进行处理,开发者可以实现自己的业务逻辑操作来对数据处理。

  ItemProcessor接口:

public interface ItemProcessor<I, O> {
O process(I item) throws Exception;
}

  在process()方法中,参数item是ItemReader读取到的数据,返回O是交给ItemWriter写的数据。在process方法中可以对读取到的数据进行处理,如果返回值是null,则表示忽略这次的数据,跳过。

  实现组件介绍:

SpringBatch框架提供的ItemProcessor组件

ItemProcessor 说明
CompositeItemProcessor 组合处理器,可以封装多个业务处理服务
ItemProcessorAdapter ItemProcessor适配器,可以服用现有的业务处理服务
PassThroughItemProcessor 不做任何业务处理,直接返回读到的数据
ValidatingItemProcessor 数据校验处理器,支持对数据的校验,如果校验不通过可以进行过滤掉或者通过slip的方式跳过对记录的处理

4.ItemWriter

  ItemWriter是Step中对资源的写处理,SpringBatch也提供了许多类型的写实现。

public interface ItemWriter<T> {
void write(List<? extends T> items) throws Exception; }
SpringBtach框架提供的ItemWriter组件
ItemWriter 说明
FlatFileItemWriter 写Flat类型文件
MultiResourceItemWriter 多文件写组件
StaxEventItemWriter 写XML类型文件
AmqpItemWriter 写AMQP类型消息
ClassifierCompositeItemWriter 根据Classifire路由不通的Item到特定的ItemWriter处理
HibernateItemWriter 基于Hibernate方式写数据库
IbatisBtachItemWriter 基于Ibatis方式写数据库
ItemWriterAdapter ItemWriter适配器,可以服用现有的服务
JdbcBatchItemWriter 基于JDBC方式写数据库
JmsItemWriter 写JMS队列
JpaItemWriter 基于Jpa方式写数据库
GenfireItemWriter 基于分布式数据库Genfire的写组件
SpELMappingGenfireItemWriter 基于Spring表达式语言写分布式数据库Genfire的组件
MimeMessageItemWriter 发送邮件的写组件
MongoItemWriter 基于分布式文件存储的数据库MongoDB写组件
Neo4jItemWriter 面向网络的数据库Neo4j的写组件
PropertyExtractingDelegatingItemWriter 属性抽取代理写组件。通过调用给定的SpringBean方法执行写入,参数由Item中指定的属性字段获取作为参数
RepositoryItemWriter 基于SpringData的写组件
SimpleMailMessageItemWriter 发送邮件的写组件
CompositeItemWriter 条目写的组合模式,支持组装多个ItemWriter

  

Spring Batch(三) Job Launcher、ItemReader、ItemProcessor、ItemWriter各个实现类和用途的更多相关文章

  1. spring batch(一):基础部分

    spring batch(一):基础部分 博客分类: Spring java   spring batch 官网: http://www.springsource.org/spring-batch 下 ...

  2. Spring Batch学习笔记三:JobRepository

    此系列博客皆为学习Spring Batch时的一些笔记: Spring Batch Job在运行时有很多元数据,这些元数据一般会被保存在内存或者数据库中,由于Spring Batch在默认配置是使用H ...

  3. Spring Batch 批处理框架

    <Spring Batch 批处理框架>基本信息作者: 刘相 出版社:电子工业出版社ISBN:9787121252419上架时间:2015-1-24出版日期:2015 年2月开本:16开页 ...

  4. 图书简介:Spring Batch批处理框架

    大数据时代批处理利器,国内首度原创解析Spring Batch框架. 内容简介: <Spring Batch 批处理框架>全面.系统地介绍了批处理框架Spring Batch,通过详尽的实 ...

  5. Spring Batch 专题

    如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...

  6. spring batch批量处理框架

    spring batch精选,一文吃透spring batch批量处理框架 前言碎语 批处理是企业级业务系统不可或缺的一部分,spring batch是一个轻量级的综合性批处理框架,可用于开发企业信息 ...

  7. Spring batch学习 详细配置解读(3)

    第一篇讲到普通job 配置 那么spring  batch 给我们提供了丰富的配置,包括定时任务,校验,复合监听器,父类,重启机制等. 下面看一个动态设置读取文件的配置 1.动态文件读取 <?x ...

  8. 【转】大数据批处理框架 Spring Batch全面解析

    如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...

  9. spring batch的使用和定时器Quart的使用

    Spring Batch是一个基于Spring的企业级批处理框架,它通过配合定时器Quartz来轻易实现大批量的数据读取或插入,并且全程自动化,无需人员管理. 在使用spring batch之前,得对 ...

随机推荐

  1. HttpClient当HTTP连接的时候出现大量CLOSE_WAIT连接(转)

    ESTABLISHED 表示正在进行网络连接的数量 TIME_WAIT 表示表示等待系统主动关闭网络连接的数量 CLOSE_WAIT 表示被动等待程序关闭的网络连接数量 上篇文章给出了解决TIME_W ...

  2. type=file的inpu美化,自定义上传按钮样式

    <div class="div1"> <div class="div2">点击上传</div> <input type ...

  3. UOJ#218. 【UNR #1】火车管理 线段树 主席树

    原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ218.html 题解 如果我们可以知道每次弹出栈之后新的栈顶是什么,那么我们就可以在一棵区间覆盖.区间求和 ...

  4. contos最小包安装完后一些准备

    yum upgradeyum install net-toolsyum -y install wgetyum -y install vim-enhanced yum install gcc gcc-c ...

  5. ECMAScript 6 字符串的扩展

    1.字符的Unicode表示法 ① JavaScript允许采用\uxxxx的形式来表示一个字符,其中xxxx表示字符的Unicode码点. 但是,这种表示方法有一个局限性,它的码点只能在\u0000 ...

  6. Round#534 div.2-C Grid game

    http://codeforces.com/contest/1104/problem/C 好厉害的题~ 只要把竖着的放在第一第二行,横着的放在第三/第四行就行. 哦吼,大半夜脑子迷糊地看英文的脑筋急转 ...

  7. F#周报2019年第11期

    新闻 Bolero:WebAssembly中的F# 尝试WebAssembly里的F# JetBrains的fsharp-support 2019.1 ML.NET 0.11发布 Outreachy内 ...

  8. Jquery中事件的重复绑定

    问题:事件的绑定具有叠加效果,已有绑定的函数时,再次绑定,执行时会出现绑定多少次,触发多少次的情况 解决:1.on();绑定事件,提供了绑定事件处理程序所需的所有功能,用于统一取代以前的bind(). ...

  9. Java笔记(二十) 注解

    注解 一.内置注解 Java内置了一些常用注解: 1.@Override 该注解修饰一个方法,表示当前类重写了父类的该方法. 2.@Deprecated  该注解可以修饰类.方法.字段.参数等.表示对 ...

  10. SSH(Spring Struts2 Hibernate)框架整合(xml版)

    案例描述:使用SSH整合框架实现部门的添加功能 工程: Maven 数据库:Oracle 案例架构: 1.依赖jar包pom.xml <project xmlns="http://ma ...