# 附录 A:条目阅读器和条目编写器列表

# 条目阅读器

Item Reader 说明
AbstractItemCountingItemStreamItemReader 抽象基类,通过计算从
ItemReader返回的项数,提供基本的
重启功能。
AggregateItemReader 一个ItemReader提供一个列表作为其
项,存储来自注入的ItemReader的对象,直到它们
准备好作为集合打包。必须将这个类
用作自定义ItemReader的包装器,该包装器可以标识记录
的边界。自定义读取器应该通过返回一个AggregateItem来标记
记录的开始和结束,它将对其true查询方法
isFooter()进行响应。请注意,这个阅读器
不是 Spring 批
提供的阅读器库的一部分,而是作为spring-batch-samples中的示例给出的。
AmqpItemReader 给定一个 Spring AmqpTemplate,它提供了
同步接收方法。receiveAndConvert()方法
允许你接收 POJO 对象。
KafkaItemReader 从 Apache Kafka 主题读取消息的ItemReader
可以将其配置为从同一主题的多个分区读取消息。
此阅读器在执行上下文中存储消息偏移量,以支持重新启动功能。
FlatFileItemReader 从平面文件读取。包括ItemStreamSkippable功能。参见[FlatFileItemReader]。
HibernateCursorItemReader 基于 HQL 查询从游标读取。参见[Cursor-based ItemReaders]。
HibernatePagingItemReader 从分页的 HQL 查询中读取
ItemReaderAdapter 将任何类调整为ItemReader接口。
JdbcCursorItemReader 通过 JDBC 从数据库游标读取数据。参见[Cursor-based ItemReaders]。
JdbcPagingItemReader 给定一个 SQL 语句,在行中进行分页
,这样就可以在不耗尽
内存的情况下读取大型数据集。
JmsItemReader 给定一个 Spring JmsOperations对象和一个 JMS
向其发送错误的目的地或目的地名称,提供通过注入的项
接收到的JmsOperations#receive()方法。
JpaPagingItemReader 给定一个 JPQL 语句,通过
行进行分页,这样就可以在不耗尽
内存的情况下读取大型数据集。
ListItemReader 提供列表中的项,在
时间提供一个列表。
MongoItemReader 给定一个MongoOperations对象和一个基于 JSON 的 MongoDB
查询,提供从MongoOperations#find()方法接收的项。
Neo4jItemReader 给定一个Neo4jOperations对象和一个
Cyhper 查询的组件,返回的项是 NEO4jOperations.query
方法的结果。
RepositoryItemReader 给定一个 Spring dataPagingAndSortingRepository对象,
aSort,以及要执行的方法的名称,返回由
Spring 数据存储库实现的项。
StoredProcedureItemReader 从执行数据库存储过程的
所产生的数据库游标读取数据。参见[StoredProcedureItemReader]
StaxEventItemReader 通过 stax 进行读取,参见[StaxEventItemReader]。
JsonItemReader 从 JSON 文档中读取项目。参见[JsonItemReader]。

# 条目编写者

Item Writer 说明
AbstractItemStreamItemWriter 组合ItemStreamItemWriter接口的抽象基类。
AmqpItemWriter 给定 Spring AmqpTemplate,它为同步send方法提供了
convertAndSend(Object)方法允许你发送 POJO 对象。
CompositeItemWriter 在注入ListItemWriter对象中,将一个项传递给每个
write方法。
FlatFileItemWriter 写入平面文件。包括ItemStream
可跳过的功能。参见[FlatFileItemWriter]。
GemfireItemWriter 使用GemfireOperations对象,可以根据 delete
标志的配置从 Gemfire 实例中写入
项。
HibernateItemWriter 这个条目编写器 Hibernate-会话知道
,并处理一些与事务相关的工作,而非“ Hibernate-知道”
的条目编写器不需要了解这些工作,然后将
委托给另一个条目编写器来进行实际的写作。
ItemWriterAdapter 将任何类调整为ItemWriter接口。
JdbcBatchItemWriter 使用来自PreparedStatement(如果可用)的批处理功能,并且可以
flush期间采取基本步骤来定位故障。
JmsItemWriter 使用JmsOperations对象,通过JmsOperations#convertAndSend()方法将项
写入默认队列。
JpaItemWriter 这个条目编写器是 JPA EntityManager-aware 的
,并处理一些与事务相关的工作,而非“ JPA-aware”ItemWriter不需要了解这些工作,并且
然后将其委托给另一个编写器来进行实际的编写。
KafkaItemWriter 使用KafkaTemplate对象,通过KafkaTemplate#sendDefault(Object, Object)方法将项写入默认主题,并使用Converter来映射该项的键。
还可以配置一个 delete 标志,以将 delete 事件发送到该主题。
MimeMessageItemWriter 使用 Spring 的JavaMailSender,类型MimeMessage的项作为邮件发送。
MongoItemWriter 给定一个MongoOperations对象,通过MongoOperations.save(Object)方法写项目
。实际的写入被延迟
,直到事务提交之前的最后一个可能时刻。
Neo4jItemWriter 给定一个Neo4jOperations对象,项目将通过save(Object)方法持久化,或者根据ItemWriter’s配置通过delete(Object)方法删除。
PropertyExtractingDelegatingItemWriter 扩展AbstractMethodInvokingDelegator动态创建参数。参数是通过从要处理的项中的字段(通过SpringBeanWrapper)检索
中的值来创建的,基于注入的字段
名称数组。
RepositoryItemWriter 给定一个 Spring 数据CrudRepository的实现,
项是通过在配置中指定的方法保存的。
StaxEventItemWriter 使用Marshaller实现
将每个项转换为 XML,然后使用
stax 将其写入 XML 文件。
jsonfileitemwriter 使用JsonObjectMarshaller实现将每个项转换为 JSON,然后将其写入 JSON 文件。