0
目標:有一個文件讀取器可以從1到N次調用,在Spring批處理中使用不同的文件名,而不必在每次讀取時關閉/重新打開文件。如何在Spring Batch中使用不同的文件名多次調用FlatFileItemReader?
我到目前爲止有:
我草擬出來的程序使用以下豆讀取CSV文件:
@Bean
public ItemReader<DataLoadRecordClass> dataLoadFileItemReader() {
this.inputRecords = new DataLoadRecordListClass();
FlatFileItemReader<DataLoadRecordClass> reader = new FlatFileItemReader<DataLoadRecordClass>();
reader.setEncoding("UTF-8");
reader.setLinesToSkip(1); //skip header line
reader.setResource(new FileSystemResource(String.format(this.fileSystemBasePath,storeName) + this.fileBasePath + this.inFileName));
LineMapper<DataLoadRecordClass> dataFileLineMapper = buildLineMapper();
reader.setLineMapper(dataFileLineMapper);
return reader;
}
STORENAME和inFileName會在運行時指定的,並且會有正常至少有4家商店需要運行,但要求運行1到N家商店。
顯然,隨着代碼的寫入,它僅適用於1個商店和1個文件。我該如何擴展它,以便它可以在每個商店中以1到N個文件並行運行1到N個存儲庫?我不想爲每個可能的存儲和文件創建bean,因爲它們唯一的區別是文件名和路徑。
謝謝!
看看http://docs.spring.io/spring-batch/apidocs/org/springframework/batch/item/file/MultiResourceItemReader.html –
謝謝,但我發現的每一個例子仍然讓讀者看着一些設置文件名/路徑,即使它有一個通配符。我需要它能夠在運行時獲取文件名/路徑,並通過基本相同的步驟並行運行每個文件。 – VydorScope
只需製作bean @ @ScopeScope,然後從'jobParameters'中注入一個變量,以便您可以參數化您的作業。 –