Spring 批处理 - 以 CSV 格式获取总记录数的最简单方法?

Spring batch - easiest way to get number of total records in CSV?

我有一个 spring 以 CSV 格式读取的批处理应用程序。获取 csv 中记录数的最简单方法是什么?我是 FlatFileItemReader<T>,我尝试在我们为 Processor 重写的 process() 方法中放置一个计数器,我认为它会为 csv 中的每一行递增,但我变得很奇怪整数。我不能在我的 Writer() 实现中做到这一点 class 因为我在我的处理器中进行数据验证 class 所以如果有异常,记录大小会更小并且它不会反映真实最初的记录数。

我只需要知道是否有人加载了一个包含 300,000 条的文件,但只有 250,000 条被写入数据库,我想知道原始 csv 中的真实记录数。

I just need to know if someone loads in a file with 300,000 but only 250,000 get written to database, I want to know the real number of records in the original csv.

您可以在 StepExecutionListener#afterStep(StepExecution stepExecution) 中进行验证。此方法为您提供了对步骤执行的引用,它允许您获取所有计数器,如 read.countwrite.count 等,以实现您的逻辑。