Appendix A: ItemReader 和 ItemWriter 列表

本站( springdoc.cn )中的内容来源于 spring.io ,原始版权归属于 spring.io。由 springdoc.cn 进行翻译,整理。可供个人学习、研究,未经许可,不得进行任何转载、商用或与之相关的行为。 商标声明:Spring 是 Pivotal Software, Inc. 在美国以及其他国家的商标。

ItemReader

Table 1. 可用的 ItemReader
ItemReader 说明 线程安全

AbstractItemStreamItemReader

抽象 base 类,结合了 ItemStreamItemReader 接口。

Yes

AbstractItemCountingItemStreamItemReader

抽象base 类,通过计算从 ItemReader 返回的 item 数提供基本的重启功能。

No

AbstractPagingItemReader

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

No

AbstractPaginatedDataItemReader

基于 Spring Data 分页设施提供基本分页功能的抽象 base 类

No

AggregateItemReader

一个 ItemReader,它提供一个 list 作为其 item,从注入的 ItemReader 中存储对象,直到它们准备好作为一个 collection 打包出来。该类必须用作能识别记录边界的自定义 ItemReader 的封装。自定义 reader 应通过返回一个对其查询方法(isHeader()isFooter())响应为 trueAggregateItem 来标记记录的开始和结束。请注意,该 reader 并非 Spring Batch 提供的 reader 库的一部分,而是作为 spring-batch-samples 中的示例提供的。

Yes

AmqpItemReader

Spring AmqpTemplate 提供同步接收方法。receiveAndConvert() 方法可让你接收 POJO 对象。

Yes

KafkaItemReader

从 Apache Kafka topic 读取消息的 ItemReader。可以对其进行配置,以便从同一 topic 的多个分区中读取消息。该 reader 在 execution context 中存储消息偏移量,以支持重启功能。

No

FlatFileItemReader

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

No

HibernateCursorItemReader

根据 HQL 查询从游标读取数据。请参阅 基于游标的 ItemReader

No

HibernatePagingItemReader

从分页的 HQL 查询中读取数据。

Yes

ItemReaderAdapter

将任何类适配到 ItemReader 接口。

Yes

JdbcCursorItemReader

通过 JDBC 从数据库游标读取数据。请参阅 "基于游标的 ItemReader"

No

JdbcPagingItemReader

在给定 SQL 语句的情况下,对行进行分页,这样就能在不耗尽内存的情况下读取大型数据集。

Yes

JmsItemReader

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

Yes

JpaCursorItemReader

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

No

JpaPagingItemReader

给定一个 JPQL 查询,翻页读取行,这样就能读取大型数据集,而不会耗尽内存。

Yes

ListItemReader

从 list 中逐一提供 item。

No

MongoItemReader

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

Yes

Neo4jItemReader

给定一个 Neo4jOperations 对象和 Cyhper query 的组件后,item 将作为 Neo4jOperations.query 方法的结果返回。

Yes

RepositoryItemReader

给定 Spring Data PagingAndSortingRepository 对象、Sort 和要执行的方法名称,返回 Spring Data repository 实现提供的 item。

Yes

StoredProcedureItemReader

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

No

StaxEventItemReader

通过 StAX 读取,见 StaxEventItemReader

No

JsonItemReader

从 Json 文档中读取 item,见 JsonItemReader

No

AvroItemReader

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

No

LdifReader

从 LDIF 资源读取 item,并将其作为 LdapAttributes 返回

No

MappingLdifReader

从 LDIF 资源读取 item,并使用 RecordMapper 将其映射到 domain 对象

No

ItemWriter

Table 2. 可用的 ItemWriter
ItemWriter 说明 线程安全

AbstractItemStreamItemWriter

抽象 base 类,结合了 ItemStreamItemWriter 接口。

Yes

AmqpItemWriter

给定 Spring AmqpTemplate,提供同步 send 方法。convertAndSend(Object) 方法可让你发送 POJO 对象。

Yes

CompositeItemWriter

将一个 item 传递给注入的 ItemWriter 对象 List 中每个 item 的 write 方法。

Yes

FlatFileItemWriter

写入平面文件。包括 ItemStreamSkippable 功能。请参阅 “FlatFileItemWriter”

No

HibernateItemWriter

该 item writer 可感知 Hibernate 会话,并处理一些与事务相关的工作,而非 "感知 Hibernate" 的 item writer 则无需了解这些工作,然后委托另一个 item writer 进行实际写入工作。

Yes

ItemWriterAdapter

将任何类适配到 ItemWriter 接口。

Yes

JdbcBatchItemWriter

使用 PreparedStatement 的批处理功能(如果可用),并能在 flush 过程中采取基本 step 查找故障。

Yes

JmsItemWriter

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

Yes

JpaItemWriter

该 item writer 感知 JPA EntityManager,并处理一些非 "感知 JPA" 的 ItemWriter 不需要知道的事务相关工作,然后委托另一个 writer 进行实际写入。

Yes

KafkaItemWriter

通过 KafkaTemplate#sendDefault(Object, Object) 方法,使用 KafkaTemplate 对象,通过 Converter 映射 item 中的 key,将 item 写入默认 topic。还可以配置 delete 标记,以便向 topic 发送删除事件。

No

MimeMessageItemWriter

使用 Spring 的 JavaMailSender,可将 MimeMessage 类型的 item 作为邮件信息发送。

Yes

MongoItemWriter

在给定 MongoOperations 对象的情况下,item 通过 MongoOperations.save(Object) 方法写入。实际写入会延迟到事务提交前的最后一刻。

Yes

Neo4jItemWriter

对于 Neo4jOperations 对象,根据 ItemWriter 的配置,通过 save(Object) 方法持久化项目,或通过 delete(Object) 方法删除 item。

Yes

PropertyExtractingDelegatingItemWriter

继承了 AbstractMethodInvokingDelegator,可即时创建参数。参数是根据注入的字段名数组,通过 SpringBeanWrapper 从待处理程序的字段中获取值而创建的。

Yes

RepositoryItemWriter

在 Spring Data CrudRepository 实现中,项目是通过配置中指定的方法保存的。

Yes

StaxEventItemWriter

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

No

JsonFileItemWriter

使用 JsonObjectMarshaller 实现将每个 item 转换为 Json 格式,然后写入 Json 文件。

No

AvroItemWriter

使用 Avro 将数据序列化为 WritableResource

No

ListItemWriter

Item writer,用于将 Item 写入 List

No