tags: springbatch
1.引言
上一篇文章《快速了解组件-spring batch(2)之helloworld》对Spring Batch进行了入门级的开发,也对基本的组件有了一定的了解。但实际开发过程中,更多的是涉及文件及数据库的操作,以定时后台运行的方式,实现批处理操作。典型操作是从文本数据(csv/txt等文件)中读取数据,然后写入到数据库存储。如下图所示:
读文件流程
若需要开发此过程,可以按照上一篇文章所写的,自定义ItemReader和ItemWriter来实现,但是Spring Batch其实已经提供现成的文件读取和数据库写入的组件,开发人员可以直接使用,提高开发效率。本文将会对文件读取和数据库写入进行实战介绍。
2.开发环境
JDK: jdk1.8
Spring Boot: 2.1.4.RELEASE
Spring Batch:4.1.2.RELEASE
开发IDE: IDEA
构建工具Maven: 3.3.9
日志组件logback:1.2.3
lombok:1.18.6
3.Spring Batch提供的读-处理-写组件一览
在使用Spring Batch内置的读写组件时,首先我们先弄清楚有哪些组件可以用,按读、写、处理,见下面说明。Spring Batch已提供了比较全面的支持。
3.1 ItemReader
ItemReader
说明
ListItemReader
读取List类型数据,只能读一次
ItemReaderAdapter
ItemReader适配器,可以复用现有的读操作
FlatFileItemReader
读Flat类型文件
StaxEventItemReader
读XML类型文件
JdbcCursorItemReader
基于JDBC游标方式读数据库
HibernateCursorItemReader
基于Hibernate游标方式读数据库
StoredProcedureItemReader
基于存储过程读数据库
JpaPagingItemReader
基于Jpa方式分页读数据库
JdbcPagingItemReader
基于JDBC方式分页读数据库
HibernatePagingItemReader
基于Hibernate方式分页读取数据库
JmsItemReader
读取JMS队列
IteratorItemReader
迭代方式的读组件
MultiResourceItemReader
多文件读组件
MongoItemReader
基于分布式文件存储的数据库 MongoDB读组件
Neo4jItemReader
面向网络的数据库Neo4j的读组件
ResourcesItemReader
基于批量资源的读组件,每次读取返回资源对象 AmqpItemReader读取AMQP队列组件
RepositoryItemReader
基于 Spring Data的读组件
3.2 ItemWriter
ItemWriter
说明
FlatFileItemWriter
写Flat类型文件
MultiResourceItemWriter
多文件写组件
StaxEventItemWriter
写XML类型文件
AmqpItemWriter
写AMQP类型消息
ClassifierCompositeItemWriter
根据 Classifier路由不同的Item到特定的ItemWriter处理
HiberateItemWriter
基于Hibernate方式写数据库
ItemWriterAdapter
ItemWriter适配器,可以复用现有的写服务
JdbcBatchItemWriter
基于JDBC方式写数据库
JmsItemWriter
写JMS队列 JpaItemWriter基于Jpa方式写数据库
GemfireItemWriter
基于分布式数据库Gemfire的写组件
SpELMappingGemfireItemWriter
基于Spring表达式语言写分布式数据库Gemfire的写组件
MimeMessageItemWriter
发送邮件的写组件
MongoItemWriter
基于分布式文件存储的数据库MongoDB写组件
Neo4jItemWriter
面向网络的数据库Neo4j的读组件
PropertyExtractingDelegatingI