附录A

优质
小牛编辑
131浏览
2023-12-01

A.1 Item Readers

Table A.1. 所有可用的Item Reader列表



































































Item Reader说明
AbstractItemCountingItemStreamItemReader抽象基类,支持重启,通过统计(counting)从 ItemReader 返回对象的数量来实现.
AggregateItemReader此 ItemReader 提供一个 list , 用来存储 ItemReader 读取的对象, 直到他们已准备装配为一个集合。
此 ItemReader 通过 FieldSetMapper 的常量值 AggregateItemReader#BEGIN_RECORD 以及 AggregateItemReader#END_RECORD 来标记记录的开始与结束。
AmqpItemReader给定一个提供同步获取方法(
synchronous receive methods)的 Spring AmqpTemplate. 使用 receiveAndConvert() 方法可以得到 POJO 对象.
FlatFileItemReader从平面文件(flat file)中读取数据,支持 ItemStream
以及 Skippable 特性. 请参考 Read from a
File 一节
HibernateCursorItemReader从基于 HQL 查询的 cursor 中读取数据。 请参考 Reading from a Database 一节。
HibernatePagingItemReader从分页(paginated)的HQL查询中读取数据
IbatisPagingItemReader通过 iBATIS 的分页查询读取数据,对于大型数据集,分页能避免内存不足/溢出的问题. 请参考: HOWTO - Read from a Database. 这个 ItemReader 在 Spring Batch 3.0 中已废弃.
ItemReaderAdapter将任意类适配到
ItemReader
接口.
JdbcCursorItemReader通过 JDBC 从 一个 database cursor 中读取数据. 请参考: HOWTO - Read from a Database
JdbcPagingItemReader给定一个 SQL statement, 通过分页查询读取数据,避免读取大型数据集时 内存不足/溢出的问题
JmsItemReader给一个 Spring JmsOperations 对象和一个 JMS
Destination 对象/也可以是用来发送错误的 destination name , 调用注入的 JmsOperations 里面的 receive()
方法来获取对象
JpaPagingItemReader给定一个 JPQL statement, 通过分页查询读取数据,避免读取大型数据集时 内存不足/溢出的问题
ListItemReader从 list 中读取数据,一次返回一条
MongoItemReader给定一个 MongoOperations 对象,以及从 MongoDB
中查询数据所使用的JSON, 通过 MongoOperations 的 find 方法来获取数据
Neo4jItemReader给定一个 Neo4jOperations 对象,以及一个
Cyhper query 所需的 components, 将 Neo4jOperations.query 方法的结果返回
RepositoryItemReader给定一个 Spring Data PagingAndSortingRepository 对象, 一个 Sort 对象,以及要执行的 method name, 返回 Spring Data repository 实现提供的数据
StoredProcedureItemReader执行存储过程(database stored procedure),从返回的 database cursor 中读取数据. 请参考: HOWTO - Read from a
Database
StaxEventItemReader通过 StAX 读取. 请参考 HOWTO - Read from a
File

A.2 Item Writers

Table A.2. 所有可用的 Item Writer 列表
































































Item Writer说明
AbstractItemStreamItemWriter抽象基类, 组合了
ItemStream

ItemWriter
接口。
AmqpItemWriter给定一个提供同步发送方法的 Spring AmqpTemplate. 使用convertAndSend(Object)
方法可以输出 POJO 对象.
CompositeItemWriter将注入的 List 里面每一个元素都传给 ItemWriter 的处理方法
FlatFileItemWriter写入平面文件(flat file). 支持 ItemStream 以及 Skippable 特性. 请参考 Writing to a File 一节
GemfireItemWriter使用 GemfireOperations 对象, 根据配置的 delete 标志,对 items 进行写入或者删除
HibernateItemWriter这个 item writer 是Hibernate会话相关的(hibernate session aware), 用来处理非 hibernate 相关的组件(non-“hibernate aware” )不需要关心的事务性工作, 并且委托另一个 item writer 来执行实际的写入工作.
IbatisBatchItemWriter在批处理中直接使用 iBatis 的 API. 这个 ItemWriter 在 Spring Batch 3.0 中已废弃.
ItemWriterAdapter将任意类适配到
ItemWriter
接口.
JdbcBatchItemWriter尽可能地利用
PreparedStatement
的批处理功能(batching features), 还可以采取基本的步骤来定位
flush
失败等问题。
JmsItemWriter利用 JmsOperations 对象, 通过 JmsOperations.convertAndSend() 方法将 items 写入到默认队列( default queue)
JpaItemWriter这个 item writer 是 JPA EntityManager aware 的, 用来处理非jpa相关的(non-“jpa aware”)
ItemWriter
不需要关心的事务性工作, 并且委托另一个 item writer 来执行实际的写入工作.
MimeMessageItemWriter通过 Spring 的 JavaMailSender 对象, 类型为
MimeMessage
的 item 可以作为 mail messages 发送出去
MongoItemWriter给定一个 MongoOperations 对象, 数据通过 MongoOperations.save(Object) 方法写入. 实际的写操作会推迟到事务提交时才执行.
Neo4jItemWriter给定一个 Neo4jOperations 对象, item 通过
save(Object) 方法完成持久化,或者通过 delete(Object) 方法来删除, 取决于
ItemWriter
的配置
PropertyExtractingDelegatingItemWriter扩展 AbstractMethodInvokingDelegator 创建动态参数. 动态参数是通过注入的 field name数组,从(SpringBeanWrapper)处理的 item 中获取的
RepositoryItemWriter给定一个 Spring Data CrudRepository 实现, 则使用配置文件指定的方法保存 item。
StaxEventItemWriter通过ObjectToXmlSerializer 对象将每个 item 转换为XML, 然后用 StAX 将这些内容写入 XML 文件。