4

我是春季批次的新手,所以也许我错了,但我不明白为什么 itemWriter 中的 write 方法需要数据列表:

void write(List<? extends T> items) throws Exception;

如果我首先了解这个过程是 itemReader 读取项目列表。在第一次迭代中读取第一个项目,依此类推...下一步是 itemProcessor,它从 itemReader 获取数据。然后有一些处理和 itemProcessor 返回我们想要保存在某个地方的新类。所以最后一步是 itemWriter,它得到这个返回 itemProcessor 的类。所以我不知道 itemWriter 何时获取数据列表。当我调试我的简单示例项目时,此列表中仍然只有一项。请有人解释一下

多谢

4

1 回答 1

7

答案在Spring Batch 文档中的这个序列图中

在此处输入图像描述

如果这还不够清楚,文档(再次!)解释说 Spring 使用面向块的处理风格:

Spring Batch 在其最常见的实现中使用“面向块”的处理方式。面向块的处理是指一次读取一个数据,并在事务边界内创建将被写出的“块”

实际上 Spring Batch 文档非常好。如果您从 Spring Batch 开始,我建议您阅读它。

于 2013-08-22T13:32:54.640 回答