マルチファイル入力
単一の Step
内で複数のファイルを処理することは一般的な要件です。すべてのファイルのフォーマットが同じであると仮定すると、MultiResourceItemReader
は XML およびフラットファイル処理の両方でこの型の入力をサポートします。ディレクトリ内の次のファイルを検討してください。
file-1.txt file-2.txt ignored.txt
file-1.txt と file-2.txt は同じ形式であり、ビジネス上の理由から、一緒に処理する必要があります。MultiResourceItemReader
は、ワイルドカードを使用して両方のファイルを読み込むために使用できます。
Java
XML
次の例は、Java でワイルドカードを使用してファイルを読み取る方法を示しています。
Java 構成
@Bean
public MultiResourceItemReader multiResourceReader(@Value("classpath:data/input/file-*.txt") Resource[] resources) {
return new MultiResourceItemReaderBuilder<Foo>()
.delegate(flatFileItemReader())
.resources(resources)
.build();
}
次の例は、XML でワイルドカードを使用してファイルを読み取る方法を示しています。
XML 構成
<bean id="multiResourceReader" class="org.spr...MultiResourceItemReader">
<property name="resources" value="classpath:data/input/file-*.txt" />
<property name="delegate" ref="flatFileItemReader" />
</bean>
参照されるデリゲートは、単純な FlatFileItemReader
です。上記の構成では、両方のファイルから入力を読み取り、ロールバックと再起動のシナリオを処理します。他の ItemReader
と同様に、再入力時に余分な入力(この場合はファイル)を追加すると、潜在的な問題が発生する可能性があることに注意してください。バッチジョブは、正常に完了するまで、個々のディレクトリで動作することをお勧めします。
入力リソースは、MultiResourceItemReader#setComparator(Comparator) を使用して順序付けされ、再始動シナリオでのジョブ実行間でリソースの順序が保持されるようにします。 |