List of ItemReaders and ItemWriters

Item Readers

Table 1. Available Item Readers
Item Reader Description Thread-safe

AbstractItemStreamItemReader

抽象基础类,其中组合了 ItemStreamItemReader 接口。

Yes

AbstractItemCountingItemStreamItemReader

抽象基础类,通过计算从 ItemReader 返回的项目数量提供基本重启功能。

No

AbstractPagingItemReader

抽象基础类,提供基本分页功能

No

AbstractPaginatedDataItemReader

抽象基础类,根据 Spring 数据的分页设施提供基本分页功能

No

AggregateItemReader

一个 ItemReader,它提供了一个列表作为其项目,存储来自注入的 ItemReader 的对象,直到它们准备好打包为集合为止。这个类必须用作一个自定义的 ItemReader 的包装,它可以识别记录边界。自定义读取器应该通过返回一个 AggregateItem 来标记记录的开始和结束,该 AggregateItem 对其查询方法 (isHeader()isFooter()) 响应 true。请注意,此读取器不是 Spring Batch 提供的读取器库的一部分,而是作为 spring-batch-samples 中的示例提供的。

Yes

AmqpItemReader

给定一个 Spring AmqpTemplate,它提供同步接收方法。receiveAndConvert() 方法允许您接收 POJO 对象。

Yes

KafkaItemReader

一个 ItemReader,用于读取 Apache Kafka 主题中的消息。可以将其配置为读取同一主题的多个分区中的消息。此读取器将消息偏移存储在执行上下文中,以支持重启功能。

No

FlatFileItemReader

从平面文件中读取。包括 ItemStreamSkippable 功能。参见 “FlatFileItemReader”

No

HibernateCursorItemReader

基于 HQL 查询从游标读取。参见 Cursor-based ItemReaders

No

HibernatePagingItemReader

通过分页的 HQL 查询进行读取。

Yes

ItemReaderAdapter

将任何类适配到 ItemReader 接口。

Yes

JdbcCursorItemReader

通过 JDBC 从数据库游标中读取。参见 link:readersAndWriters.html#cursorBasedItemReaders[“Cursor-based ItemReaders”。

No

JdbcPagingItemReader

根据 SQL 语句分页浏览各行,读入大数据集时不会出现内存不足情况。

Yes

JmsItemReader

给定一个 Spring JmsOperations 对象以及要发送错误的 JMS 目标或目标名称,提供通过注入的 JmsOperations#receive() 方法接收的项目。

Yes

JpaCursorItemReader

执行 JPQL 查询并遍历返回的结果集

No

JpaPagingItemReader

根据 JPQL 查询分页浏览各行,读入大数据集时不会出现内存不足情况。

Yes

ListItemReader

一次提供一个来自列表的项目。

No

MongoItemReader

给定 MongoOperations 对象和基于 JSON 的 MongoDB 查询,提供从 MongoOperations#find() 方法接收的项目。

Yes

Neo4jItemReader

给定 Neo4jOperations 对象和 Cypher 查询的组件,项目作为 Neo4jOperations.query 方法的结果返回。

Yes

RepositoryItemReader

给定 Spring Data PagingAndSortingRepository 对象、一个 Sort 以及要执行的方法名称,返回 Spring Data 存储库实现提供的项目。

Yes

StoredProcedureItemReader

从执行数据库存储过程产生的数据库游标读取。参见 StoredProcedureItemReader

No

StaxEventItemReader

通过 StAX 进行读取。参见 StaxEventItemReader

No

JsonItemReader

从 Json 文档读取项目。参见 JsonItemReader

No

AvroItemReader

从包含序列化 Avro 对象的资源中读取项目。

No

LdifReader

从 LDIF 资源中读取项并返回它们,作为 LdapAttributes

No

MappingLdifReader

从 LDIF 资源中读取项,并使用 RecordMapper 将其映射到域对象

No

Item Writers

Table 2. Available Item Writers
Item Writer Description Thread-safe

AbstractItemStreamItemWriter

抽象基类,它组合了 ItemStreamItemWriter 接口。

Yes

AmqpItemWriter

给定一个 Spring AmqpTemplate,针对同步 send 方法提供 。convertAndSend(Object) 方法允许您发送 POJO 对象。

Yes

CompositeItemWriter

将项传递给 write 方法,用于 List 中每个项 中的 ItemWriter 对象的注入。

Yes

FlatFileItemWriter

写入平面文件。包括 ItemStream 和可跳过功能。参见 “FlatFileItemWriter”

No

HibernateItemWriter

此项写入器具有 Hibernate-session 意识 ,并且处理一些事务相关工作,这对于非 “hibernate-aware” 项写入器来说可能不需要了解,然后委派给另一个项写入器来执行实际写入。

Yes

ItemWriterAdapter

将任何类调整为 ItemWriter 接口。

Yes

JdbcBatchItemWriter

使用 PreparedStatement 中的分批功能(如果可用),而且可以 采取基本步骤来在 flush 中找到失败。

Yes

JmsItemWriter

使用 JmsOperations 对象,通过 JmsOperations#convertAndSend() 方法将项目写入 默认队列。

Yes

JpaItemWriter

此项写入器具有 JPA EntityManager 意识 ,并且处理一些事务相关工作,这对于非 “JPA-aware” ItemWriter 来说可能不需要了解,然后委派给另一个写入器来执行实际写入。

Yes

KafkaItemWriter

使用 KafkaTemplate 对象,通过 KafkaTemplate#sendDefault(Object, Object) 方法使用 Converter 将密钥从项映射到默认主题,并写入项。还可以配置删除标志以向主题发送删除事件。

No

MimeMessageItemWriter

使用 Spring 的 JavaMailSender,将 MimeMessage 类型的项作为邮件发送。

Yes

MongoItemWriter

如果有 MongoOperations object,则可以通过 MongoOperations.save(Object) 方法编写项目。实际的写入操作被推迟到提交事务之前的最后一刻。

Yes

Neo4jItemWriter

如果有 Neo4jOperations object,则可以通过 save(Object) 方法保留项目,也可以通过 delete(Object) 删除项目,如 ItemWriter’s 配置所指示。

Yes

PropertyExtractingDelegatingItemWriter

扩展 AbstractMethodInvokingDelegator,在运行时创建参数。参数是通过从要处理的项目中的字段中检索值(通过 SpringBeanWrapper)来创建的,这些字段基于注入的字段名称数组来创建。

Yes

RepositoryItemWriter

如果提供了 Spring Data CrudRepository 实现,则项目会通过配置中指定的方法来保存。

Yes

StaxEventItemWriter

它使用 Marshaller 实现将各项目转换为 XML,然后使用 StAX 将其写入 XML 文件。

No

JsonFileItemWriter

它使用 JsonObjectMarshaller 实现将各项目转换为 Json,然后将其写入 Json 文件。

No

AvroItemWriter

它使用 Avro 将数据序列化到 WritableResource 中。

No

ListItemWriter

将项目写入 List 的项目编写器。

No