此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2! |
项读取器和写入器实现
在本节中,我们将向您介绍尚未了解过的读者和作家 在前面的部分中讨论过。
装饰
在某些情况下,用户需要将专用行为附加到预先存在的ItemReader
.Spring Batch 提供了一些开箱即用的装饰器,可以添加
附加行为对您的ItemReader
和ItemWriter
实现。
Spring Batch 包括以下装饰器:
SynchronizedItemStreamReader
使用ItemReader
不是线程安全的,Spring Batch 提供了SynchronizedItemStreamReader
decorator,可用于使ItemReader
线程安全。Spring Batch 提供了一个SynchronizedItemStreamReaderBuilder
构造
的实例SynchronizedItemStreamReader
.
例如,FlatFileItemReader
不是线程安全的,不能用于
多线程步骤。这个阅读器可以用一个SynchronizedItemStreamReader
以便在多线程步骤中安全地使用它。这是一个如何装饰的例子
这样的读者:
@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
.
SingleItemPeekableItemReader 的 peek 方法不是线程安全的,因为它不会 可以在多个线程中接受速览。只有一条线程偷看 将在下一次调用中读取该项目。 |
SynchronizedItemStreamWriter
使用ItemWriter
不是线程安全的,Spring Batch 提供了SynchronizedItemStreamWriter
decorator,可用于使ItemWriter
线程安全。Spring Batch 提供了一个SynchronizedItemStreamWriterBuilder
构造
的实例SynchronizedItemStreamWriter
.
例如,FlatFileItemWriter
不是线程安全的,不能用于
多线程步骤。这个作家可以用一个SynchronizedItemStreamWriter
以便在多线程步骤中安全地使用它。这是一个如何装饰的例子
这样的作家:
@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 Batch 为常用消息传递系统提供以下读取器和写入器:
AmqpItemReader
这AmqpItemReader
是一个ItemReader
使用AmqpTemplate
接收或转换
来自交流的消息。Spring Batch 提供了一个AmqpItemReaderBuilder
构造
的实例AmqpItemReader
.
AmqpItemWriter
这AmqpItemWriter
是一个ItemWriter
使用AmqpTemplate
将消息发送到
AMQP 交易所。如果名称未在
提供的AmqpTemplate
.Spring Batch 提供了一个AmqpItemWriterBuilder
自
构造一个AmqpItemWriter
.
JmsItemReader
这JmsItemReader
是一个ItemReader
对于使用JmsTemplate
.模板
应该有一个默认目标,用于为read()
方法。Spring Batch 提供了一个JmsItemReaderBuilder
构造JmsItemReader
.
JmsItemWriter
这JmsItemWriter
是一个ItemWriter
对于使用JmsTemplate
.模板
应该有一个默认的目的地,用于将项目发送到write(List)
.Spring
Batch 提供了一个JmsItemWriterBuilder
构造JmsItemWriter
.
数据库读取器
Spring Batch 提供以下数据库读取器:
MongoPagingItemReader
这MongoPagingItemReader
是一个ItemReader
使用
分页技术。Spring Batch 提供了一个MongoPagingItemReaderBuilder
构造一个
实例MongoPagingItemReader
.
数据库编写者
Spring Batch 提供以下数据库编写器:
MongoItemWriter
这MongoItemWriter
是一个ItemWriter
写入 MongoDB 存储的实现
使用 Spring Data 的MongoOperations
.Spring Batch 提供了一个MongoItemWriterBuilder
构造MongoItemWriter
.
RepositoryItemWriter
这RepositoryItemWriter
是一个ItemWriter
包装器CrudRepository
从Spring开始
数据。Spring Batch 提供了一个RepositoryItemWriterBuilder
构造
这RepositoryItemWriter
.