此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Batch 文档 5.1.2spring-doc.cn

此版本仍在开发中,尚未被视为稳定版本。对于最新的稳定版本,请使用 Spring Batch 文档 5.1.2spring-doc.cn

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

装饰

在某些情况下,用户需要将专用行为附加到预先存在的 .Spring Batch 提供了一些开箱即用的装饰器,这些装饰器可以添加 其他行为到您的 和 implementations。ItemReaderItemReaderItemWriterspring-doc.cn

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

SynchronizedItemStreamReader

当使用非线程安全的 that 时, Spring Batch 会提供装饰器,该装饰器可用于使线程安全。Spring Batch 提供了一个 to 构造 的 .ItemReaderSynchronizedItemStreamReaderItemReaderSynchronizedItemStreamReaderBuilderSynchronizedItemStreamReaderspring-doc.cn

例如,the 不是线程安全的,不能在 多线程步骤。这个读取器可以用 a 修饰,以便在多线程步骤中安全地使用它。下面是一个如何装饰的示例 这样的读者:FlatFileItemReaderSynchronizedItemStreamReaderspring-doc.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 方法添加到 .这个 peek 方法允许用户提前速览一个项目。对速览的重复调用将返回相同的结果 item,这是从该方法返回的下一项。Spring Batch 提供了一个来构造 .ItemReaderreadSingleItemPeekableItemReaderBuilderSingleItemPeekableItemReaderspring-doc.cn

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

SynchronizedItemStreamWriter

当使用非线程安全的 that 时, Spring Batch 会提供装饰器,该装饰器可用于使线程安全。Spring Batch 提供了一个 to 构造 的 .ItemWriterSynchronizedItemStreamWriterItemWriterSynchronizedItemStreamWriterBuilderSynchronizedItemStreamWriterspring-doc.cn

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

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

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

MultiResourceItemWriter

将 a 包装并创建一个新的 output 资源(当当前资源中写入的项目计数超过 .Spring Batch 提供了一个 构造 .MultiResourceItemWriterResourceAwareItemWriterItemStreamitemCountLimitPerResourceMultiResourceItemWriterBuilderMultiResourceItemWriterspring-doc.cn

ClassifierCompositeItemWriter

该调用每个项目的实现集合之一,基于通过提供的 .如果所有委托都是线程安全的,则实现是线程安全的。Spring Batch 提供了一个用于构造 .ClassifierCompositeItemWriterItemWriterClassifierClassifierCompositeItemWriterBuilderClassifierCompositeItemWriterspring-doc.cn

ClassifierCompositeItemProcessor

是一个调用 实现集合,基于实现的 Router 模式 通过提供的 .Spring Batch 提供了一个来构造 .ClassifierCompositeItemProcessorItemProcessorItemProcessorClassifierClassifierCompositeItemProcessorBuilderClassifierCompositeItemProcessorspring-doc.cn

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

消息传递 Readers 和 Writers

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

AmqpItemReader

这是一个使用 an 来接收或转换 来自 Exchange 的消息。Spring Batch 提供了一个 to 构造 的 .AmqpItemReaderItemReaderAmqpTemplateAmqpItemReaderBuilderAmqpItemReaderspring-doc.cn

AmqpItemWriter

这是一个使用 an 发送消息到 一个 AMQP 交易所。如果 提供的 .Spring Batch 提供了一个 构造 .AmqpItemWriterItemWriterAmqpTemplateAmqpTemplateAmqpItemWriterBuilderAmqpItemWriterspring-doc.cn

JmsItemReader

这是使用 .模板 应具有 default destination ,该 destination 用于为方法提供项目。Spring Batch 提供了一个来构造 .JmsItemReaderItemReaderJmsTemplateread()JmsItemReaderBuilderJmsItemReaderspring-doc.cn

JmsItemWriter

这是使用 .模板 应具有默认目标,该目标用于发送 中的项目。Spring Batch 提供了一个用于构造 .JmsItemWriterItemWriterJmsTemplatewrite(List)JmsItemWriterBuilderJmsItemWriterspring-doc.cn

KafkaItemReader

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

KafkaItemWriter

这是一个用于 Apache Kafka 的 API,它使用 将事件发送到 default 主题。Spring Batch 提供了一个 构造 .KafkaItemWriterItemWriterKafkaTemplateKafkaItemWriterBuilderKafkaItemWriterspring-doc.cn

数据库读取器

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

Neo4jItemReader

它是一个从图形数据库 Neo4j 中读取对象的 通过使用分页技术。Spring Batch 提供了一个 构造 .Neo4jItemReaderItemReaderNeo4jItemReaderBuilderNeo4jItemReaderspring-doc.cn

MongoItemReader

这是一个使用 paging 技术。Spring Batch 提供了一个来构造 的实例。MongoItemReaderItemReaderMongoItemReaderBuilderMongoItemReaderspring-doc.cn

RepositoryItemReader

这是一个使用 .Spring Batch 提供了一个 构造 .RepositoryItemReaderItemReaderPagingAndSortingRepositoryRepositoryItemReaderBuilderRepositoryItemReaderspring-doc.cn

数据库写入器

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

Neo4jItemWriter

这是一个写入 Neo4j 数据库的实现。 Spring Batch 提供了一个来构造 .Neo4jItemWriterItemWriterNeo4jItemWriterBuilderNeo4jItemWriterspring-doc.cn

MongoItemWriter

这是一个写入 MongoDB 存储的实现 使用 Spring Data 的 .Spring Batch 提供了一个来构造 .MongoItemWriterItemWriterMongoOperationsMongoItemWriterBuilderMongoItemWriterspring-doc.cn

RepositoryItemWriter

这是 Spring 的 a 的包装器 数据。Spring Batch 提供了一个 to 构造 这。RepositoryItemWriterItemWriterCrudRepositoryRepositoryItemWriterBuilderRepositoryItemWriterspring-doc.cn

JdbcBatchItemWriter

这是一个使用批处理功能为提供的所有项目执行一批语句的 API。 Spring Batch 提供了一个来构造 .JdbcBatchItemWriterItemWriterNamedParameterJdbcTemplateJdbcBatchItemWriterBuilderJdbcBatchItemWriterspring-doc.cn

JpaItemWriter

这是一个使用 JPA 进行合并的 不属于持久性上下文的任何实体。Spring Batch 提供了一个来构造 .JpaItemWriterItemWriterEntityManagerFactoryJpaItemWriterBuilderJpaItemWriterspring-doc.cn

专业读者

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

LdifReader

从 中读取 LDIF(LDAP 数据交换格式)记录 , 解析它们,并为每个执行的 API 返回一个对象。Spring Batch 提供 a 来构造 的实例。LdifReaderResourceLdapAttributereadLdifReaderBuilderLdifReaderspring-doc.cn

MappingLdifReader

从 读取 LDIF(LDAP 数据交换格式)记录,解析它们,然后将每个 LDIF 记录映射到 POJO(普通旧 Java 对象)。 每次读取都会返回一个 POJO。Spring Batch 提供了一个 to 构造 的 .MappingLdifReaderResourceMappingLdifReaderBuilderMappingLdifReaderspring-doc.cn

AvroItemReader

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

专业作家

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

SimpleMailMessageItemWriter

这是一个可以发送邮件消息的。它 将消息的实际发送委托给 的实例。Spring Batch 提供 a 来构造 的实例。SimpleMailMessageItemWriterItemWriterMailSenderSimpleMailMessageItemWriterBuilderSimpleMailMessageItemWriterspring-doc.cn

AvroItemWriter

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

专用处理器

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

ScriptItemProcessor

这是一个将当前项目传递给 process 添加到提供的脚本中,并且脚本的结果由处理器返回。Spring Batch 提供了一个用于构造 .ScriptItemProcessorItemProcessorScriptItemProcessorBuilderScriptItemProcessorspring-doc.cn