跳到主要内容

项目读取器和项目写入器列表

QWen Plus 中英对照 List of ItemReaders and ItemWriters

项目读取器

表 1. 可用的 Item Readers

项读取器描述线程安全
AbstractItemStreamItemReader抽象基类,结合了 ItemStreamItemReader 接口。是的
AbstractItemCountingItemStreamItemReader抽象基类,通过计算从 ItemReader 返回的项数量提供基本的重启功能。No
AbstractPagingItemReader提供基本分页功能的抽象基类No
AbstractPaginatedDataItemReader抽象基类,基于 Spring Data 的分页功能提供基本的分页特性。No
AggregateItemReader一个将列表作为其项返回的 ItemReader,它会从注入的 ItemReader 中存储对象,直到它们准备好被封装为集合。此类必须作为自定义 ItemReader 的包装器使用,该自定义 ItemReader 能够识别记录边界。自定义读取器应通过返回一个 AggregateItem 来标记记录的开始和结束,该 AggregateItem 对其查询方法(isHeader()isFooter())的响应为 true。请注意,此读取器不是 Spring Batch 提供的读取器库的一部分,而是在 spring-batch-samples 中提供的示例。是的
AmqpItemReader给定一个 Spring AmqpTemplate,它提供了同步接收方法。receiveAndConvert() 方法允许你接收 POJO 对象。
KafkaItemReader一个从 Apache Kafka 主题读取消息的 ItemReader。它可以配置为从同一主题的多个分区读取消息。此读取器将消息偏移量存储在执行上下文中,以支持重启功能。No
FlatFileItemReader从平面文件读取。包含 ItemStreamSkippable 功能。请参阅 “FlatFileItemReader”No
ItemReaderAdapter将任何类适配到 ItemReader 接口。
JdbcCursorItemReader通过 JDBC 从数据库游标读取数据。参见 “基于游标的 ItemReader”No
JdbcPagingItemReader给定一个 SQL 语句,可以通过分页浏览行,这样可以读取大型数据集而不至于耗尽内存。是的
JmsItemReader给定一个 Spring JmsOperations 对象以及用于发送错误的 JMS 目标或目标名称,通过注入的 JmsOperations#receive() 方法提供接收到的项目。是的
JpaCursorItemReader执行一个 JPQL 查询并迭代返回的结果集。No
JpaPagingItemReader给定一个 JPQL 查询,可以通过分页浏览行,从而在不耗尽内存的情况下读取大型数据集。
ListItemReader提供来自列表的项目,一次一个。No
MongoItemReader给定一个 MongoOperations 对象和基于 JSON 的 MongoDB 查询,提供通过 MongoOperations#find() 方法接收到的项目。是的
Neo4jItemReader给定一个 Neo4jOperations 对象和 Cypher 查询的组成部分,Neo4jOperations.query 方法的执行结果会返回相关条目。是的
RepositoryItemReader给定一个 Spring Data PagingAndSortingRepository 对象、一个 Sort 对象以及要执行的方法名称,返回由 Spring Data 仓库实现提供的项目。是的
StoredProcedureItemReader从数据库存储过程执行结果的数据库游标中读取数据。参见 StoredProcedureItemReaderNo
StaxEventItemReader通过 StAX 进行读取。参见 StaxEventItemReaderNo
JsonItemReader从 Json 文档中读取项目。参见 JsonItemReaderNo
AvroItemReader从包含序列化 Avro 对象的资源中读取项目。No
LdifReader从 LDIF 资源读取条目并以 LdapAttributes 形式返回它们。No
MappingLdifReader从 LDIF 资源中读取条目,并使用 RecordMapper 将其映射到域对象。No

项目编写者

表 2. 可用的 Item Writers

项写入器描述线程安全
AbstractItemStreamItemWriter抽象基类,结合了`ItemStream` 和`ItemWriter` 接口。
AmqpItemWriter给定一个 Spring AmqpTemplate,提供同步的 send 方法。convertAndSend(Object) 方法允许你发送 POJO 对象。
CompositeItemWriter将项传递给注入的 List 中每个 ItemWriter 对象的 write 方法。
FlatFileItemWriter写入到平面文件。包含 ItemStream 和可跳过功能。参见 “FlatFileItemWriter”
ItemWriterAdapter将任何类适配到 ItemWriter 接口。
JdbcBatchItemWriter如果可用,使用 PreparedStatement 的批处理功能,并可以采取初步措施定位 flush 期间的失败。
JmsItemWriter使用 JmsOperations 对象,通过 JmsOperations#convertAndSend() 方法将项写入默认队列。
JpaItemWriter此项写入器是 JPA EntityManager 感知的,处理一些与事务相关的工作,这些工作对于非“JPA 感知”的 ItemWriter 是不需要知道的,然后委托给另一个写入器执行实际写入。
KafkaItemWriter使用 KafkaTemplate 对象,通过 KafkaTemplate#sendDefault(Object, Object) 方法将项写入默认主题,使用 Converter 从项中映射键。还可以配置删除标志以向主题发送删除事件。
MimeMessageItemWriter使用 Spring 的 JavaMailSender,将类型为 MimeMessage 的项作为邮件消息发送。
MongoItemWriter给定一个 MongoOperations 对象,通过 MongoOperations.save(Object) 方法写入项。实际写入延迟到事务提交前的最后一刻。
Neo4jItemWriter给定一个 Neo4jOperations 对象,根据 ItemWriter 的配置,通过 save(Object) 方法持久化项或通过 delete(Object) 方法删除项。
PropertyExtractingDelegatingItemWriter扩展 AbstractMethodInvokingDelegator,动态创建参数。参数通过从要处理的项的字段中检索值(通过 SpringBeanWrapper)创建,基于注入的字段名数组。
RepositoryItemWriter给定一个 Spring Data CrudRepository 实现,通过配置中指定的方法保存项。
StaxEventItemWriter使用 Marshaller 实现将每个项转换为 XML,然后通过 StAX 写入到 XML 文件中。
JsonFileItemWriter使用 JsonObjectMarshaller 实现将每个项转换为 Json,然后写入到 Json 文件中。
AvroItemWriter使用 Avro 将数据序列化到 WritableResource
ListItemWriter将项写入到 List 的项写入器。