多檔案輸入

在單一 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() {
	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 一樣,新增額外的輸入(在此案例中為檔案)可能會在重新啟動時導致潛在問題。建議批次 Job 在成功完成之前,應使用其各自的目錄。

輸入資源透過使用 MultiResourceItemReader#setComparator(Comparator) 排序,以確保在重新啟動情境中,資源排序在 Job 執行之間保持一致。