因此,我正在创建一个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