Item Reader 和 Writer 实现
在本节中,我们将向您介绍尚未阅读的读者和作家 在前面的部分中讨论过。
装饰
在某些情况下,用户需要将专门的行为附加到预先存在的ItemReader.Spring Batch 提供了一些开箱即用的装饰器,这些装饰器可以添加
additional 行为添加到您的ItemReader和ItemWriter实现。
Spring Batch 包括以下装饰器:
SynchronizedItemStreamReader
当使用ItemReader不是线程安全的,Spring Batch 提供了SynchronizedItemStreamReaderdecorator 的 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 提供了SynchronizedItemStreamWriterdecorator 的 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是一个ItemWriterwrapper 的CrudRepository从 Spring 开始
数据。Spring Batch 提供了一个RepositoryItemWriterBuilder要构造
这RepositoryItemWriter.
专业读者
Spring Batch 提供了以下专用阅读器:
LdifReader
这LdifReader从Resource,
解析它们,并返回一个LdapAttributeobject for eachread执行。Spring Batch
提供LdifReaderBuilder要构造LdifReader.