内容来自《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;
}

其实现类和介绍:

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基础知识介绍

    Table of Contents spring batch简介 Spring Batch架构介绍 Spring Batch核心概念介绍 什么是Job 什么是JobInstance 什么是JobPar ...

  2. Spring配置文件的详细介绍

    目录 1. Spring的配置文件的命名 2. Spring配置文件中有什么 3. set注入 4. 构造注入 1. Spring的配置文件的命名 答:Spring的配置文件是放在resources文 ...

  3. (转载)spring jar包详细介绍

    spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-moc ...

  4. Spring Batch 专题

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

  5. 大数据批处理框架Spring Batch 的全面解析

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

  6. Spring batch批量处理框架最佳实践

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

  7. spring批量写入mysql数据库_快速使用组件-spring batch(3)读文件数据到数据库

    tags: springbatch 1.引言 上一篇文章<快速了解组件-spring batch(2)之helloworld>对Spring Batch进行了入门级的开发,也对基本的组件有 ...

  8. Spring Batch 使用指南

    Spring Batch的核心概念 如下图,JobLancher启动job,一个job包含若干step,每个step又包含一个ItemReader(读数据),ItemProcessor(处理数据),和 ...

  9. 介绍Spring Batch 中Tasklet 和 Chunks

    介绍Spring Batch 中Tasklet 和 Chunks Spring Batch 提供了两种不同方式实现job: tasklet 和 chunk.本文通过实例实践两种方法. 示例需求说明 给 ...

最新文章

  1. Android Java 8使用Lamda报错:Execution failed for task :app:transformJackWithJackForDebug - Android?...
  2. android四中启动模式
  3. 使网页变灰的代码(包括FLASH等所有网页元素).
  4. 第21课:中文自然语言处理的应用、现状和未来
  5. [JZOJ5866]【NOIP2018模拟9.13】指引
  6. 【经典回放】多种语言系列数据结构算法:栈(JavaScript版)
  7. 飞畅科技-交换机的三种交换方式详解
  8. 三星有网络显示无网络连接到服务器,三星s5296连接了网络为什么不能用 看完这些原因就知道了...
  9. QTP/UFT11.5官方下载与安装教程及汉化
  10. JDK 11 API中文帮助文档
  11. Node2vec原理剖析,代码实现
  12. 用动画做出一个正方体并且3d旋转,详解
  13. 桃李春风一杯酒,江湖夜雨十年灯。
  14. openstack里给云主机配置vip
  15. JavaScript基础入门10
  16. 使用endnote自动批量生成毕业论文参考文献
  17. lv官网编码查询_老太太拿LV买菜装大葱!结果闺女被抓了......
  18. 高通平台sensor学习
  19. 【亲测可用】解决Ultra iso软碟通写入硬盘映像时 硬盘映像容量太小问题
  20. FIDDLER的使用方法及技巧总结[连载2]---FIDDLER用户界面

热门文章

  1. mes系统和plc通讯案例_MES与PLC实时通信系统研究
  2. elementui icon图标
  3. 关于Could not find method javacompileOptions() for arguments
  4. 基于YOLOV5的目标检测模型-口罩检测
  5. 從turtle海龜動畫學習Python-高中彈性課程1
  6. PHP语言系列API接口,按关键词搜索商品列表
  7. 深度解读:2020年运营商破局竞速的关键变化
  8. 米家接入HomeKit系列四:HomeBridge搭建、配置与接入米家设备
  9. 通过平面图分析计算机网络,第五人格格里奥的回忆地图平面图 里奥的回忆地图解析...
  10. 大名鼎鼎的SEO,有哪些发展方向?