Spring Batch(三) 详细介绍Job Launcher、ItemReader、ItemProcessor、ItemWriter各个实现类和用途
内容来自《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;@Overridepublic 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;}@Overridepublic void afterPropertiesSet() throws Exception {//逻辑处理}
}
2.ItemReader
ItemReader是Step中对资源的读处理,SpringBatch框架提供了多种读的实现类共我们使用。
IteamReader接口:
public interface ItemReader<T> {T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException;
}
其实现类和介绍:
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,则表示忽略这次的数据,跳过。
实现组件介绍:
ItemProcessor | 说明 |
CompositeItemProcessor | 组合处理器,可以封装多个业务处理服务 |
ItemProcessorAdapter | ItemProcessor适配器,可以服用现有的业务处理服务 |
PassThroughItemProcessor | 不做任何业务处理,直接返回读到的数据 |
ValidatingItemProcessor | 数据校验处理器,支持对数据的校验,如果校验不通过可以进行过滤掉或者通过slip的方式跳过对记录的处理 |
4.ItemWriter
ItemWriter是Step中对资源的写处理,SpringBatch也提供了许多类型的写实现。
public interface ItemWriter<T> {void write(List<? extends T> items) throws Exception;
}
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各个实现类和用途相关推荐
- 批处理框架spring batch基础知识介绍
Table of Contents spring batch简介 Spring Batch架构介绍 Spring Batch核心概念介绍 什么是Job 什么是JobInstance 什么是JobPar ...
- Spring配置文件的详细介绍
目录 1. Spring的配置文件的命名 2. Spring配置文件中有什么 3. set注入 4. 构造注入 1. Spring的配置文件的命名 答:Spring的配置文件是放在resources文 ...
- (转载)spring jar包详细介绍
spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-moc ...
- Spring Batch 专题
如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...
- 大数据批处理框架Spring Batch 的全面解析
如今微服务架构讨论的如火如荼.但在企业架构里除了大量的OLTP交易外,还存在海量的批处理交易.在诸如银行的金融机构中,每天有3-4万笔的批处理作业需要处理.针对OLTP,业界有大量的开源框架.优秀的架 ...
- Spring batch批量处理框架最佳实践
spring batch精选,一文吃透spring batch批量处理框架 前言碎语 批处理是企业级业务系统不可或缺的一部分,spring batch是一个轻量级的综合性批处理框架,可用于开发企业信息 ...
- spring批量写入mysql数据库_快速使用组件-spring batch(3)读文件数据到数据库
tags: springbatch 1.引言 上一篇文章<快速了解组件-spring batch(2)之helloworld>对Spring Batch进行了入门级的开发,也对基本的组件有 ...
- Spring Batch 使用指南
Spring Batch的核心概念 如下图,JobLancher启动job,一个job包含若干step,每个step又包含一个ItemReader(读数据),ItemProcessor(处理数据),和 ...
- 介绍Spring Batch 中Tasklet 和 Chunks
介绍Spring Batch 中Tasklet 和 Chunks Spring Batch 提供了两种不同方式实现job: tasklet 和 chunk.本文通过实例实践两种方法. 示例需求说明 给 ...
最新文章
- Android Java 8使用Lamda报错:Execution failed for task :app:transformJackWithJackForDebug - Android?...
- android四中启动模式
- 使网页变灰的代码(包括FLASH等所有网页元素).
- 第21课:中文自然语言处理的应用、现状和未来
- [JZOJ5866]【NOIP2018模拟9.13】指引
- 【经典回放】多种语言系列数据结构算法:栈(JavaScript版)
- 飞畅科技-交换机的三种交换方式详解
- 三星有网络显示无网络连接到服务器,三星s5296连接了网络为什么不能用 看完这些原因就知道了...
- QTP/UFT11.5官方下载与安装教程及汉化
- JDK 11 API中文帮助文档
- Node2vec原理剖析,代码实现
- 用动画做出一个正方体并且3d旋转,详解
- 桃李春风一杯酒,江湖夜雨十年灯。
- openstack里给云主机配置vip
- JavaScript基础入门10
- 使用endnote自动批量生成毕业论文参考文献
- lv官网编码查询_老太太拿LV买菜装大葱!结果闺女被抓了......
- 高通平台sensor学习
- 【亲测可用】解决Ultra iso软碟通写入硬盘映像时 硬盘映像容量太小问题
- FIDDLER的使用方法及技巧总结[连载2]---FIDDLER用户界面
热门文章
- mes系统和plc通讯案例_MES与PLC实时通信系统研究
- elementui icon图标
- 关于Could not find method javacompileOptions() for arguments
- 基于YOLOV5的目标检测模型-口罩检测
- 從turtle海龜動畫學習Python-高中彈性課程1
- PHP语言系列API接口,按关键词搜索商品列表
- 深度解读:2020年运营商破局竞速的关键变化
- 米家接入HomeKit系列四:HomeBridge搭建、配置与接入米家设备
- 通过平面图分析计算机网络,第五人格格里奥的回忆地图平面图 里奥的回忆地图解析...
- 大名鼎鼎的SEO,有哪些发展方向?