此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2spring-doc.cadn.net.cn

项读取器和写入器实现

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

装饰

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

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

SynchronizedItemStreamReader

使用ItemReader不是线程安全的,Spring Batch 提供了SynchronizedItemStreamReaderdecorator,可用于使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.这个窥视 方法允许用户向前查看一个项目。重复调用速览返回相同的 item,这是从read方法。Spring Batch 提供了一个SingleItemPeekableItemReaderBuilder构造SingleItemPeekableItemReader.spring-doc.cadn.net.cn

SingleItemPeekableItemReader 的 peek 方法不是线程安全的,因为它不会 可以在多个线程中接受速览。只有一条线程偷看 将在下一次调用中读取该项目。

SynchronizedItemStreamWriter

使用ItemWriter不是线程安全的,Spring Batch 提供了SynchronizedItemStreamWriterdecorator,可用于使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

MultiResourceItemWriter包装一个ResourceAwareItemWriterItemStream并创建一个新的 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

消息读者和写入者

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

AmqpItemReader

AmqpItemReader是一个ItemReader使用AmqpTemplate接收或转换 来自交流的消息。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自 将事件发送到默认主题。Spring Batch 提供了一个KafkaItemWriterBuilder自 构造一个KafkaItemWriter.spring-doc.cadn.net.cn

数据库读取器

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

MongoPagingItemReader

MongoPagingItemReader是一个ItemReader使用 分页技术。Spring Batch 提供了一个MongoPagingItemReaderBuilder构造一个 实例MongoPagingItemReader.spring-doc.cadn.net.cn

MongoCursorItemReader

MongoCursorItemReader是一个ItemReader使用 流媒体技术。Spring Batch 提供了一个MongoCursorItemReaderBuilder构造一个 实例MongoCursorItemReader.spring-doc.cadn.net.cn

RepositoryItemReader

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

数据库编写者

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

MongoItemWriter

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

RepositoryItemWriter

RepositoryItemWriter是一个ItemWriter包装器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, 解析它们,并返回一个LdapAttribute对象read执行。弹簧批次 提供一个LdifReaderBuilder构造LdifReader.spring-doc.cadn.net.cn

MappingLdifReader

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

AvroItemReader

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

专业作家

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

SimpleMailMessageItemWriter

SimpleMailMessageItemWriter是一个ItemWriter可以发送邮件消息。它 将消息的实际发送委托给MailSender.弹簧批次 提供一个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将当前项传递给处理 到提供的脚本,并且处理器返回脚本的结果。Spring Batch 提供了一个ScriptItemProcessorBuilder构造ScriptItemProcessor.spring-doc.cadn.net.cn