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

### 条目阅读器

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

### 条目编写者

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