2016-02-26 190 views
2

您好我有要求讀取(n數)的平面文件。在文件讀取期間,如果收到FileParseException:來自閱讀器,則停止當前文件讀取並安全出來並處理下一個文件並繼續執行作業。目前我有這個XML配置,但我不想這樣做,因爲我沒有真正的跳過限制數。有沒有辦法處理這種情況可能會使用ItemReaderListener?跳過FlatFileParseException或彈簧批處理中的特定異常

<chunk reader="flatFileItemReader" writer="itemWriter" 
      commit-interval="10" skip-limit="2"> 
     <skippable-exception-classes> 
      <include class="org.springframework.batch.item.file.FlatFileParseException"/> 
     </skippable-exception-classes> 
+0

的可能的複製[如何跳過空白行CSV使用FlatFileItemReader和塊](http://stackoverflow.com/questions/29673524/how-to-skip-blank-lines-in-csv-using-flatfileitemreader-and-chunks) –

回答

0

而不是指定跳過限制,您可以使用策略。有幾種現成的跳過策略,聽起來你總是想跳過(沒有限制),使用AlwaysSkipItemSkipPolicy。

示例配置:

<batch:skip-policy> 

    <bean:bean class="org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy"/> 

</batch:skip-policy> 
+0

謝謝Doeleman您的寶貴意見。你的假設是正確的,只有我總是想跳過一些特定的例外。請你分享一些例子。 –

+0

只需在塊元素中添加一個可跳過的異常類部分,如:<批次:可跳過異常類> <批次:包括類=「MyException」/> ' –

0

感謝Doeleman,根據你輸入我能夠跳過exception using AlwaysSkipItemSkipPolicy這是多麼我已經實現

public class SkipPolicy extends AlwaysSkipItemSkipPolicy { 

    @Override 
    public boolean shouldSkip(java.lang.Throwable t, int skipCount){ 

     if(t instanceof NonSkippableReadException){ 
      return true; 
     } 
     return false; 

    } 
} 

xml config. 

<batch:chunk reader="cvsFileItemReader" writer="mysqlItemWriter" 
        commit-interval="2" skip-policy="mySkipPolicy"> 

<bean id="mySkipPolicy" class="com.model.SkipPolicy"/>