Item Reader 和 Writer 实现
在本节中,我们将向您介绍尚未阅读的读者和作家 在前面的部分中讨论过。
装饰
在某些情况下,用户需要将专门的行为附加到预先存在的ItemReader
.Spring Batch 提供了一些开箱即用的装饰器,这些装饰器可以添加
additional 行为添加到您的ItemReader
和ItemWriter
实现。
Spring Batch 包括以下装饰器:
SynchronizedItemStreamReader
当使用ItemReader
不是线程安全的,Spring Batch 提供了SynchronizedItemStreamReader
decorator 的 intent 函数,该 API 可用于将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
.这个 peek
方法允许用户提前速览一个项目。对速览的重复调用将返回相同的结果
item 返回的 Item 中,这是从read
方法。Spring Batch 提供了一个SingleItemPeekableItemReaderBuilder
要构造SingleItemPeekableItemReader
.
SingleItemPeekableItemReader 的 peek 方法不是线程安全的,因为它不会 可以在多个线程中遵循 peek。只有一个线程偷看 将在下一次调用 READ 时获取该项目。 |
SynchronizedItemStreamWriter
当使用ItemWriter
不是线程安全的,Spring Batch 提供了SynchronizedItemStreamWriter
decorator 的 intent 函数,该 API 可用于将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
.
消息传递 Readers 和 Writers
Spring Batch 为常用的消息传递系统提供了以下读取器和写入器:
AmqpItemReader
这AmqpItemReader
是一个ItemReader
它使用AmqpTemplate
接收或转换
来自 Exchange 的消息。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 提供以下数据库编写器:
Neo4jItemWriter
这Neo4jItemWriter
是一个ItemWriter
写入 Neo4j 数据库的实现。
Spring Batch 提供了一个Neo4jItemWriterBuilder
要构造Neo4jItemWriter
.
MongoItemWriter
这MongoItemWriter
是一个ItemWriter
写入 MongoDB 存储的实现
使用 Spring Data 的MongoOperations
.Spring Batch 提供了一个MongoItemWriterBuilder
要构造MongoItemWriter
.
RepositoryItemWriter
这RepositoryItemWriter
是一个ItemWriter
wrapper 的CrudRepository
从 Spring 开始
数据。Spring Batch 提供了一个RepositoryItemWriterBuilder
要构造
这RepositoryItemWriter
.
专业读者
Spring Batch 提供了以下专用阅读器:
LdifReader
这LdifReader
从Resource
,
解析它们,并返回一个LdapAttribute
object for eachread
执行。Spring Batch
提供LdifReaderBuilder
要构造LdifReader
.