2017-08-16 93 views
0

我想讀春批多個XML文件,閱讀我應該驗證每個文件的名字,並把它的背景下,我怎麼能處理過嗎? 是有可能有使用微進程和讀寫器處理器此塞納里奧?? :閱讀和春天批量驗證

folder : file1.xml file2.xml file3.xml 
validate filename (file1.xml) -- read file1 -- process -- write 
then 
validate filename (file2.xml) -- read file2 -- write 
validate filename (file3.xml) -- read file3 -- write 
...... 

或任何其他方式??????

+0

你只會處理驗證的文件,或者是否有任何驗證錯誤停止處理剩下的文件? –

+0

只處理驗證的文件 – marie

回答

1

有您能採取與此三種方法。每個人都有好處和弱點。

使用一個步驟驗證
您可以用validateFileName一步,preceedes處理該文件的步驟(比如processFiles)設置你的工作了。該validateFileName步驟將做必要再提供要處理的文件進行下一步的文件名的任何驗證。它是如何溝通,這可能是一個簡單有效的文件移動到一個新的目錄或複雜如使用作業的ExecutionContext存儲處理的文件的名稱。

這樣做的優點是,它能夠消除驗證加工而成。缺點是它讓你的工作稍微複雜一點,因爲你有一個額外的步驟。

使用StepExecutionListener做驗證
你可以使用一個StepExecutionListener#beforeStep()調用來完成驗證。關於如何傳達什麼是有效的,什麼不是,傳遞相同的概念。

這可能不那麼複雜,但它更加緊密地耦合(儘管很少)處理和驗證。

使用ItemReader,用於驗證它讀取
前最後一個選項是寫一個ItemReader實現,類似於MultiResourceItemReader但提供了一個勾入讀之前驗證文件。如果文件沒有驗證,您可以跳過它。

該選項再次將驗證與處理耦合在一起,但可能會爲此特定用例提供很好的可重用抽象。

我希望這有助於!

+0

非常感謝你@Michael – marie