我希望能捕获item reader所抛出的异常(例如,读取器未打开、不正确的token异常等)并处理它。目前Spring Batch将这些异常作为致命错误抛出并退出步骤。
请告诉我是否有任何方法可以做到这一点?
我希望能捕获item reader所抛出的异常(例如,读取器未打开、不正确的token异常等)并处理它。目前Spring Batch将这些异常作为致命错误抛出并退出步骤。
请告诉我是否有任何方法可以做到这一点?
FlatFileItemReader
抛出的
org.springframework.batch.item.file.FlatFileParseException
并执行一些自定义处理和日志记录。我进行了一些研究,几乎得出结论我可能必须编写一个自定义的读取器来代替我当前正在使用的默认读取器,直到我偶然发现Spring Batch文档中的一个宝藏部分:http://docs.spring.io/spring-batch/reference/html/configureStep.html#interceptingStepExecution。ItemReadListener<T>
接口的自定义实现,并覆盖onReadError(Exception ex)
方法,然后在相应的步骤中注册这个监听器类。这样,当读取器在从文件中读取时遇到异常时,该方法将被调用。异常引用也将传递给方法,您可以根据需要进行日志记录等操作。
类似地,如果您的整个目的是跳过在读取时可能发生的此类异常,则可以尝试在XML中向块配置添加以下内容:<skippable-exception-classes>
<include class="org.springframework.batch.item.file.FlatFileParseException"/>
</skippable-exception-classes>
参考:http://docs.spring.io/spring-batch/reference/html/configureStep.html#configuringSkip
问题已解决!:)