Spring Batch ItemWriter:读取和处理所有记录后的后处理

时间:2015-06-29 09:39:14

标签: spring-batch writer

我在ItemReader / ItemProcessor / ItemWriter的工作中迈出了一步。 在我的ItemWriter中,我需要为每条记录增加一个变量,以便知道哪个是文件中记录的行号。现在,当我处理单个文件时,我使用的静态变量非常适合我想要做的事情。问题是:我可以重新启动我的工作(使用不同的参数),当我在不重新启动我的应用程序之前处理另一个文件时,我的变量不会重新启动到初始数字,而它是静态的,我可以将我的计数器设置为" 33"而不是1 ...

我想我可以使用stepContext而不是使用静态变量解决这个问题,但我不喜欢这种方式。我更喜欢在处理完所有记录时调用一个方法(类似于FlatFileItemWriter' footerCallback),这样我就可以重置我的静态变量了。我实际上只是想避开stepContext方式。

对于" classic"是否有这样的方法? ItemWriter(不是预定义的平面文件)?还是另一种方法呢?

1 个答案:

答案 0 :(得分:0)

由于我只想在读取和处理整个文件时进行一些处理,我发现我可以使用StepExecutionListener及其方法afterStep。我可以在完成步骤后重置我的静态变量(或做任何我想做的事情),这样我就可以多次运行我的工作,而不会出现静态字段值的问题。