1

我有一个 Spring 批处理应用程序,我使用了面向块的编程,因为我扩展了 FlatFileItemWriter 类来生成输出文件。

问题是我将有超过 1000 条记录作为输入,并且块值是 100。所以 customFlatFileItemWriter 将被调用 10 次。但问题是每条记录都是相互关联的,我应该检查前一个 id 和下一个记录 id。

批量输入

123, sample1
123, sample2 // Here I have to check 123 is same as 123 which is previous id
124, sample3 // Here I have to check 124 is same as 123 which is previous id
125, sample4 // Here I have to check 125 is same as 124 which is previous id

为此,如果块在 id - 124 处完成,那么我们在操作记录 id '125' 时无法获取记录 id '124'。

在 stepExecution 中,我们可以将对象保持在 Execution 中并进行下一个任务,但是在这种情况下,我们没有得到 stepExecution,所以无论如何都要让对象进行下一个块操作。

我的自定义 FlatFileItemWriter 的代码

public class FileIW<T> extends FlatFileItemWriter<T> {

    @Override
    public String doWrite(List<? extends T> items) {
        StringBuilder lines = new StringBuilder();
        for (T item : items) {
            User user = (User)item;
            System.out.println(user.getId());
            lines.append(this.lineAggregator.aggregate(item)).append(this.lineSeparator);
        }
        return lines.toString();
    }

}
4

0 回答 0