|
此版本仍在开发中,尚不被认为是稳定的。对于最新的稳定版本,请使用 Spring Batch 文档 5.2.2! |
项读取器和写入器实现
在本节中,我们将向您介绍尚未了解过的读者和作家 在前面的部分中讨论过。
装饰
在某些情况下,用户需要将专用行为附加到预先存在的ItemReader.Spring Batch 提供了一些开箱即用的装饰器,可以添加
附加行为对您的ItemReader和ItemWriter实现。
Spring Batch 包括以下装饰器:
SynchronizedItemStreamReader
使用ItemReader不是线程安全的,Spring Batch 提供了SynchronizedItemStreamReaderdecorator,可用于使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 提供了SynchronizedItemStreamWriterdecorator,可用于使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.