Item Reader 和 Writer 实现

在本节中,我们将向您介绍尚未阅读的读者和作家 在前面的部分中讨论过。spring-doc.cadn.net.cn

装饰

在某些情况下,用户需要将专门的行为附加到预先存在的ItemReader.Spring Batch 提供了一些开箱即用的装饰器,这些装饰器可以添加 additional 行为添加到您的ItemReaderItemWriter实现。spring-doc.cadn.net.cn

Spring Batch 包括以下装饰器:spring-doc.cadn.net.cn

SynchronizedItemStreamReader

当使用ItemReader不是线程安全的,Spring Batch 提供了SynchronizedItemStreamReaderdecorator 的 intent 函数,该 API 可用于将ItemReader线程安全。Spring Batch 提供了一个SynchronizedItemStreamReaderBuilder构造 的SynchronizedItemStreamReader.spring-doc.cadn.net.cn

例如,FlatFileItemReader不是线程安全的,不能在 多线程步骤。此读取器可以用SynchronizedItemStreamReader以便在多线程步骤中安全地使用它。下面是一个如何装饰的示例 这样的读者:spring-doc.cadn.net.cn

@Bean
public SynchronizedItemStreamReader<Person> itemReader() {
	FlatFileItemReader<Person> flatFileItemReader = new FlatFileItemReaderBuilder<Person>()
			// set reader properties
			.build();

	return new SynchronizedItemStreamReaderBuilder<Person>()
			.delegate(flatFileItemReader)
			.build();
}

SingleItemPeekableItemReader

Spring Batch 包含一个装饰器,该装饰器将 peek 方法添加到ItemReader.这个 peek 方法允许用户提前速览一个项目。对速览的重复调用将返回相同的结果 item 返回的 Item 中,这是从read方法。Spring Batch 提供了一个SingleItemPeekableItemReaderBuilder要构造SingleItemPeekableItemReader.spring-doc.cadn.net.cn

SingleItemPeekableItemReader 的 peek 方法不是线程安全的,因为它不会 可以在多个线程中遵循 peek。只有一个线程偷看 将在下一次调用 READ 时获取该项目。

SynchronizedItemStreamWriter

当使用ItemWriter不是线程安全的,Spring Batch 提供了SynchronizedItemStreamWriterdecorator 的 intent 函数,该 API 可用于将ItemWriter线程安全。Spring Batch 提供了一个SynchronizedItemStreamWriterBuilder构造 的SynchronizedItemStreamWriter.spring-doc.cadn.net.cn

例如,FlatFileItemWriter不是线程安全的,不能在 多线程步骤。这个编写器可以用SynchronizedItemStreamWriter以便在多线程步骤中安全地使用它。下面是一个如何装饰的示例 这样的作家:spring-doc.cadn.net.cn

@Bean
public SynchronizedItemStreamWriter<Person> itemWriter() {
	FlatFileItemWriter<Person> flatFileItemWriter = new FlatFileItemWriterBuilder<Person>()
			// set writer properties
			.build();

	return new SynchronizedItemStreamWriterBuilder<Person>()
			.delegate(flatFileItemWriter)
			.build();
}

MultiResourceItemWriter

MultiResourceItemWriterResourceAwareItemWriterItemStream并创建一个新的 output 资源(当当前资源中写入的项数超过itemCountLimitPerResource.Spring Batch 提供了一个MultiResourceItemWriterBuilder自 构造MultiResourceItemWriter.spring-doc.cadn.net.cn

ClassifierCompositeItemWriter

ClassifierCompositeItemWriter调用ItemWriter每个项目的实现,基于通过提供的Classifier.如果所有委托都是线程安全的,则实现是线程安全的。Spring Batch 提供了一个ClassifierCompositeItemWriterBuilder要构造ClassifierCompositeItemWriter.spring-doc.cadn.net.cn

ClassifierCompositeItemProcessor

ClassifierCompositeItemProcessor是一个ItemProcessor它调用 的集合ItemProcessor实现,基于实现的路由器模式 通过提供的Classifier.Spring Batch 提供了一个ClassifierCompositeItemProcessorBuilder要构造ClassifierCompositeItemProcessor.spring-doc.cadn.net.cn

消息传递 Readers 和 Writers

Spring Batch 为常用的消息传递系统提供了以下读取器和写入器:spring-doc.cadn.net.cn

AmqpItemReader

AmqpItemReader是一个ItemReader它使用AmqpTemplate接收或转换 来自 Exchange 的消息。Spring Batch 提供了一个AmqpItemReaderBuilder构造 的AmqpItemReader.spring-doc.cadn.net.cn

AmqpItemWriter

AmqpItemWriter是一个ItemWriter它使用AmqpTemplate将消息发送到 一个 AMQP 交易所。如果 提供的AmqpTemplate.Spring Batch 提供了一个AmqpItemWriterBuilder自 构造AmqpItemWriter.spring-doc.cadn.net.cn

JmsItemReader

JmsItemReader是一个ItemReader对于使用JmsTemplate.模板 应具有默认目标,该目标用于为read()方法。Spring Batch 提供了一个JmsItemReaderBuilder要构造JmsItemReader.spring-doc.cadn.net.cn

JmsItemWriter

JmsItemWriter是一个ItemWriter对于使用JmsTemplate.模板 应具有默认目标,用于将项目发送到write(List).Spring Batch 提供了一个JmsItemWriterBuilder要构造JmsItemWriter.spring-doc.cadn.net.cn

KafkaItemReader

KafkaItemReader是一个ItemReader以获取 Apache Kafka 主题。它可以配置 从同一主题的多个分区中读取消息。它存储消息偏移量 以支持重启功能。Spring Batch 提供了一个KafkaItemReaderBuilder要构造KafkaItemReader.spring-doc.cadn.net.cn

KafkaItemWriter

KafkaItemWriter是一个ItemWriter对于使用KafkaTemplate自 将事件发送到 default 主题。Spring Batch 提供了一个KafkaItemWriterBuilder自 构造KafkaItemWriter.spring-doc.cadn.net.cn

数据库读取器

Spring Batch 提供以下数据库读取器:spring-doc.cadn.net.cn

Neo4jItemReader

Neo4jItemReader是一个ItemReader从图形数据库 Neo4j 中读取对象 通过使用分页技术。Spring Batch 提供了一个Neo4jItemReaderBuilder自 构造Neo4jItemReader.spring-doc.cadn.net.cn

MongoItemReader

MongoItemReader是一个ItemReader使用 paging 技术。Spring Batch 提供了一个MongoItemReaderBuilder构造 实例的MongoItemReader.spring-doc.cadn.net.cn

RepositoryItemReader

RepositoryItemReader是一个ItemReader,该 API 使用PagingAndSortingRepository.Spring Batch 提供了一个RepositoryItemReaderBuilder自 构造RepositoryItemReader.spring-doc.cadn.net.cn

数据库写入器

Spring Batch 提供以下数据库编写器:spring-doc.cadn.net.cn

Neo4jItemWriter

Neo4jItemWriter是一个ItemWriter写入 Neo4j 数据库的实现。 Spring Batch 提供了一个Neo4jItemWriterBuilder要构造Neo4jItemWriter.spring-doc.cadn.net.cn

MongoItemWriter

MongoItemWriter是一个ItemWriter写入 MongoDB 存储的实现 使用 Spring Data 的MongoOperations.Spring Batch 提供了一个MongoItemWriterBuilder要构造MongoItemWriter.spring-doc.cadn.net.cn

RepositoryItemWriter

RepositoryItemWriter是一个ItemWriterwrapper 的CrudRepository从 Spring 开始 数据。Spring Batch 提供了一个RepositoryItemWriterBuilder要构造 这RepositoryItemWriter.spring-doc.cadn.net.cn

JdbcBatchItemWriter

JdbcBatchItemWriter是一个ItemWriter,它使用NamedParameterJdbcTemplate为提供的所有项执行一批语句。 Spring Batch 提供了一个JdbcBatchItemWriterBuilder要构造JdbcBatchItemWriter.spring-doc.cadn.net.cn

JpaItemWriter

JpaItemWriter是一个ItemWriter使用 JPAEntityManagerFactory合并 不属于持久性上下文的任何实体。Spring Batch 提供了一个JpaItemWriterBuilder要构造JpaItemWriter.spring-doc.cadn.net.cn

专业读者

Spring Batch 提供了以下专用阅读器:spring-doc.cadn.net.cn

LdifReader

LdifReaderResource, 解析它们,并返回一个LdapAttributeobject for eachread执行。Spring Batch 提供LdifReaderBuilder要构造LdifReader.spring-doc.cadn.net.cn

MappingLdifReader

MappingLdifReaderResource解析它们,然后将每个 LDIF 记录映射到 POJO (Plain Old Java Object)。 每次读取都会返回一个 POJO。Spring Batch 提供了一个MappingLdifReaderBuilder构造 的MappingLdifReader.spring-doc.cadn.net.cn

AvroItemReader

AvroItemReader从 Resource 中读取序列化的 Avro 数据。 每次读取都会返回一个由 Java 类或 Avro 架构指定的类型的实例。 可以选择为嵌入或不嵌入 Avro 架构的输入配置读取器。 Spring Batch 提供了一个AvroItemReaderBuilder要构造AvroItemReader.spring-doc.cadn.net.cn

专业作家

Spring Batch 提供了以下专门的编写器:spring-doc.cadn.net.cn

SimpleMailMessageItemWriter

SimpleMailMessageItemWriter是一个ItemWriter可以发送邮件消息。它 将实际的消息发送委托给MailSender.Spring Batch 提供SimpleMailMessageItemWriterBuilder要构造SimpleMailMessageItemWriter.spring-doc.cadn.net.cn

AvroItemWriter

AvroItemWrite根据给定的类型或 Schema 将 Java 对象序列化为 WriteableResource。 可以选择将编写器配置为在输出中嵌入 Avro 架构,也可以不嵌入。 Spring Batch 提供了一个AvroItemWriterBuilder要构造AvroItemWriter.spring-doc.cadn.net.cn

专用处理器

Spring Batch 提供以下专用处理器:spring-doc.cadn.net.cn

ScriptItemProcessor

ScriptItemProcessor是一个ItemProcessor将当前项传递给 process 添加到提供的脚本中,并且脚本的结果由处理器返回。Spring Batch 提供了一个ScriptItemProcessorBuilder要构造ScriptItemProcessor.spring-doc.cadn.net.cn