项目读取器和项目写入器列表
项目读取器
表 1. 可用的 Item Readers
项读取器 | 描述 | 线程安全 |
---|---|---|
AbstractItemStreamItemReader | 抽象基类,结合了 ItemStream 和 ItemReader 接口。 | 是的 |
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 | 从平面文件读取。包含 ItemStream 和 Skippable 功能。请参阅 “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 | 从数据库存储过程执行结果的数据库游标中读取数据。参见 StoredProcedureItemReader | No |
StaxEventItemReader | 通过 StAX 进行读取。参见 StaxEventItemReader。 | No |
JsonItemReader | 从 Json 文档中读取项目。参见 JsonItemReader。 | No |
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 的项写入器。 | 否 |