最新の安定バージョンについては、Spring Batch ドキュメント 6.0.0 を使用してください! |
アイテムリーダーおよびライターの実装
このセクションでは、前のセクションでまだ説明していないリーダーとライターを紹介します。
デコレーター
場合によっては、ユーザーが既存の ItemReader に追加される特別な動作が必要です。Spring Batch は、ItemReader および ItemWriter の実装に追加の動作を追加できる、すぐに使えるデコレーターを提供します。
Spring Batch には次のデコレーターが含まれます。
SynchronizedItemStreamReader
スレッドセーフではない ItemReader を使用する場合、Spring Batch は SynchronizedItemStreamReader デコレータを提供します。これは、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 には、ItemReader にピークメソッドを追加するデコレーターが含まれています。このピークメソッドにより、ユーザーは 1 つ先のアイテムをピークできます。ピークを繰り返し呼び出すと同じアイテムが返され、これが read メソッドから返される次のアイテムです。Spring Batch は、SingleItemPeekableItemReader のインスタンスを構築するために SingleItemPeekableItemReaderBuilder を提供します。
| SingleItemPeekableItemReader のピークメソッドは、複数のスレッドでピークを尊重することができないため、スレッドセーフではありません。ピークしたスレッドの 1 つだけが、次の読み取り呼び出しでそのアイテムを取得します。 |
SynchronizedItemStreamWriter
スレッドセーフではない ItemWriter を使用する場合、Spring Batch は SynchronizedItemStreamWriter デコレータを提供します。これは、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 をラップし、現在のリソースに書き込まれたアイテムの数が itemCountLimitPerResource を超えると、新しい出力リソースを作成します。Spring Batch は、MultiResourceItemWriterBuilder を提供して、MultiResourceItemWriter のインスタンスを構築します。
メッセージングリーダーおよびライター
Spring Batch は、一般的に使用されるメッセージングシステム用に次のリーダーとライターを提供します。
AmqpItemReader
AmqpItemReader は、AmqpTemplate を使用して交換機からメッセージを受信または変換する ItemReader です。Spring Batch は、AmqpItemReaderBuilder を提供して、AmqpItemReader のインスタンスを構築します。
AmqpItemWriter
AmqpItemWriter は、AmqpTemplate を使用して AMQP 交換にメッセージを送信する ItemWriter です。指定された AmqpTemplate で名前が指定されていない場合、メッセージは名前のない交換に送信されます。Spring Batch は、AmqpItemWriter のインスタンスを構築するために AmqpItemWriterBuilder を提供します。
JmsItemReader
JmsItemReader は、JmsTemplate を使用する JMS 用の ItemReader です。テンプレートには、read() メソッドにアイテムを提供するために使用されるデフォルトの宛先が必要です。Spring Batch は、JmsItemReader のインスタンスを構築するために JmsItemReaderBuilder を提供します。
JmsItemWriter
JmsItemWriter は、JmsTemplate を使用する JMS 用の ItemWriter です。テンプレートには、write(List) でアイテムを送信するために使用されるデフォルトの宛先が必要です。Spring Batch は、JmsItemWriter のインスタンスを構築するために JmsItemWriterBuilder を提供します。
データベースリーダー
Spring Batch は、次のデータベースリーダーを提供します。
Neo4jItemReader
Neo4jItemReader は、ページング技術を使用してグラフデータベース Neo4j からオブジェクトを読み取る ItemReader です。Spring Batch は、Neo4jItemReader のインスタンスを構築する Neo4jItemReaderBuilder を提供します。
MongoItemReader
MongoItemReader は、ページング技術を使用して MongoDB からドキュメントを読み取る ItemReader です。Spring Batch は、MongoItemReader のインスタンスを構築する MongoItemReaderBuilder を提供します。
HibernateCursorItemReader
HibernateCursorItemReader は、Hibernate 上に構築されたデータベースレコードを読み取るための ItemStreamReader です。HQL クエリを実行し、初期化されると、read() メソッドが呼び出されると結果セットを反復処理し、現在の行に対応するオブジェクトを連続して返します。Spring Batch は、HibernateCursorItemReaderBuilder を提供して、HibernateCursorItemReader のインスタンスを構築します。
データベースライター
Spring Batch は、次のデータベースライターを提供します。
Neo4jItemWriter
Neo4jItemWriter は、Neo4j データベースに書き込む ItemWriter 実装です。Spring Batch は、Neo4jItemWriter のインスタンスを構築する Neo4jItemWriterBuilder を提供します。
MongoItemWriter
MongoItemWriter は、Spring Data の MongoOperations の実装を使用して MongoDB ストアに書き込む ItemWriter 実装です。Spring Batch は、MongoItemWriterBuilder を提供して、MongoItemWriter のインスタンスを構築します。
RepositoryItemWriter
RepositoryItemWriter は、Spring Data からの CrudRepository の ItemWriter ラッパーです。Spring Batch は、RepositoryItemWriterBuilder を提供して、RepositoryItemWriter のインスタンスを構築します。
HibernateItemWriter
HibernateItemWriter は、Hibernate セッションを使用して、現在の Hibernate セッションの一部ではないエンティティを保存または更新する ItemWriter です。Spring Batch は、HibernateItemWriter のインスタンスを構築する HibernateItemWriterBuilder を提供します。
専門リーダー
Spring Batch は、次の専門リーダーを提供します。
LdifReader
LdifReader は、Resource から LDIF(LDAP Data Interchange Format)レコードを読み取り、解析し、実行された read ごとに LdapAttribute オブジェクトを返します。Spring Batch は、LdifReader のインスタンスを構築するために LdifReaderBuilder を提供します。