多檔案輸入

在單個 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) 對輸入資源進行排序,以確保在重啟場景中作業執行之間保留資源排序。
© . This site is unofficial and not affiliated with VMware.