多檔案輸入
在單一 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 執行之間保持一致。 |