因此,我正在创建一个Spring Batch作业,以读取CSV文件以及某些包含不完整数据的行;它检查,输出到日志中该行不完整,然后跳过。它工作得很好,除非在工作结束时我希望它记录发现不完整的行数。就像“发现X个不完整的行”一样简单。

我已经用Google搜索并搜索了一个解决方案,但没有真正找到任何东西。

任何帮助表示赞赏,并需要询问更多信息。

最佳答案

Spring Batch本身会跟踪其读取,写入,处理的记录数以及跳过的记录数(对于每个编号)。该信息存储在StepExecution中。可以从StepExecution访问StepExecutionListener。在这种情况下,afterStep方法的实现就足够了。

public class SkippedItemStepExecutionListener extends StepExecutionListenerSupport {

    @Override
    public ExitStatus afterStep(StepExecution stepExecution) {
        int skipped = stepExecution.getSkipCount(); // Total for read+write+process
        // Log it to somewhere.
        return null;
    }
}


the reference guide中说明了如何将其添加到您的工作/步骤中

链接


StepExecution javadoc
StepExecutionListener javadoc
侦听器配置Reference

10-02 03:31