ItemReader 和 ItemWriter 列表

ItemReader

表 1. 可用的 ItemReader
ItemReader 描述 线程安全

AbstractItemStreamItemReader

结合了 `ItemStream` 和 `ItemReader` 接口的抽象基类。

AbstractItemCountingItemStreamItemReader

通过计数 `ItemReader` 返回的数据项数量来提供基本重启功能的抽象基类。

AbstractPagingItemReader

提供基本分页功能的抽象基类

AbstractPaginatedDataItemReader

基于 Spring Data 分页功能提供基本分页特性的抽象基类

AggregateItemReader

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

AmqpItemReader

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

KafkaItemReader

一个从 Apache Kafka topic 中读取消息的 `ItemReader`。它可以配置为从同一 topic 的多个分区读取消息。此 Reader 在执行上下文中存储消息偏移量以支持重启功能。

FlatFileItemReader

从平面文件读取。包括 `ItemStream` 和 `Skippable` 功能。参见 “FlatFileItemReader”

ItemReaderAdapter

将任何类适配到 `ItemReader` 接口。

JdbcCursorItemReader

通过 JDBC 从数据库游标读取。参见 “基于游标的 ItemReader”

JdbcPagingItemReader

给定一个 SQL 语句,按页读取行,这样可以在不耗尽内存的情况下读取大型数据集。

JmsItemReader

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

JpaCursorItemReader

执行 JPQL 查询并迭代返回的结果集

JpaPagingItemReader

给定一个 JPQL 查询,按页读取行,这样可以在不耗尽内存的情况下读取大型数据集。

ListItemReader

按顺序从列表中提供数据项。

MongoItemReader

给定一个 `MongoOperations` 对象和一个基于 JSON 的 MongoDB 查询,提供从 `MongoOperations#find()` 方法接收到的数据项。

Neo4jItemReader

给定一个 `Neo4jOperations` 对象和一个 Cypher 查询的组成部分,数据项作为 Neo4jOperations.query 方法的结果返回。

RepositoryItemReader

给定一个 Spring Data `PagingAndSortingRepository` 对象、一个 `Sort` 以及要执行的方法名,返回由 Spring Data 仓库实现提供的数据项。

StoredProcedureItemReader

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

StaxEventItemReader

通过 StAX 读取。参见 StaxEventItemReader

JsonItemReader

从 Json 文档读取数据项。参见 JsonItemReader

AvroItemReader

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

LdifReader

从 LDIF 资源读取数据项并将其作为 `LdapAttributes` 返回

MappingLdifReader

从 LDIF 资源读取数据项,并使用 `RecordMapper` 将它们映射到领域对象

ItemWriter

表 2. 可用的 ItemWriter
ItemWriter 描述 线程安全

AbstractItemStreamItemWriter

结合了 `ItemStream` 和 `ItemWriter` 接口的抽象基类。

AmqpItemWriter

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

CompositeItemWriter

将数据项传递给注入的 `ItemWriter` 对象 `List` 中每个项的 `write` 方法。

FlatFileItemWriter

写入平面文件。包括 `ItemStream` 和 Skippable 功能。参见 “FlatFileItemWriter”

ItemWriterAdapter

将任何类适配到 `ItemWriter` 接口。

JdbcBatchItemWriter

使用 `PreparedStatement` 的批处理功能(如果可用),并且可以在 `flush` 期间采取基本步骤来定位失败。

JmsItemWriter

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

JpaItemWriter

此 ItemWriter 具有 JPA `EntityManager` 意识,并处理一些非“JPA 意识”的 `ItemWriter` 无需了解的与事务相关的工作,然后委托给另一个 writer 进行实际写入。

KafkaItemWriter

使用 `KafkaTemplate` 对象,通过 `KafkaTemplate#sendDefault(Object, Object)` 方法将数据项写入默认 topic,使用 `Converter` 将 key 从数据项中映射出来。还可以配置删除标志以向 topic 发送删除事件。

MimeMessageItemWriter

使用 Spring 的 `JavaMailSender`,将类型为 `MimeMessage` 的数据项作为邮件消息发送。

MongoItemWriter

给定一个 `MongoOperations` 对象,通过 `MongoOperations.save(Object)` 方法写入数据项。实际写入会延迟到事务提交前的最后可能时刻。

Neo4jItemWriter

给定一个 `Neo4jOperations` 对象,数据项通过 `save(Object)` 方法持久化或通过 `delete(Object)` 删除,具体取决于 `ItemWriter` 的配置

PropertyExtractingDelegatingItemWriter

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

RepositoryItemWriter

给定一个 Spring Data `CrudRepository` 实现,数据项通过配置中指定的方法保存。

StaxEventItemWriter

使用 `Marshaller` 实现将每个数据项转换为 XML,然后使用 StAX 将其写入 XML 文件。

JsonFileItemWriter

使用 `JsonObjectMarshaller` 实现将每个数据项转换为 Json,然后将其写入 Json 文件。

AvroItemWriter

使用 Avro 将数据序列化到 `WritableResource`

ListItemWriter

将数据项写入 `List` 的 ItemWriter。