当前位置: 首页 > 知识库问答 >
问题:

为什么spring批处理itemWriter有方法write with list of

万俟震博
2023-03-14

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

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

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

thx很多

共有1个答案

淳于知
2023-03-14

答案就在这个来自Spring批处理文档的序列图中。

如果这还不够清楚,请参阅文档(再一次!)解释Spring使用面向块的处理样式:

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

 类似资料:
  • 我有一个假问题。为了解释我的用例,我有不同类型的DAO;比如说啤酒。。。等等,我想用一个通用的ItemWriter来处理所有的问题。我创建了一个,在这里我定义了; 作家班是这样的; 到目前为止一切都还好。事情变得复杂的地方是,我为每个存储库定义了单独的配置类,其中定义了存储库特定的项。例如,为用户插入数据库的步骤。 当我用IJ编写这段代码时,我抱怨

  • 我在没有ItemWriter的情况下定义了我的tasklet,如下所示: 我得到了这个错误: 配置问题:

  • 我有一个简单的Spring批处理作业,包含几个步骤,最后一步是编写报表,所以我有ItemReader、ItemProcessor和ItemWriter。ItemWriter按块编写取决于步骤中定义的块数,但我需要等到获得所有项后再编写最终报告。我怎么能那样做?

  • 问题内容: 我是hibernate的新手,我对hibernate批处理有疑问,我读了一些有关hibernate批处理的教程,他们说 Hibernate将所有持久化的对象缓存在会话级缓存中,最终您的应用程序将在第50,000行附近出现OutOfMemoryException崩溃。如果您将批处理与Hibernate一起使用,则可以解决此问题, 我的疑问是不是要在外部初始化会话,为什么我们不能将其初始化

  • 我能用一个ItemReader和多个子步骤编写一个Spring批处理步骤吗?每个步骤后面都有一个ItemProcessor和一个ItemWriter? 我正在努力实现这样的目标: 补充说明 为了避免前后矛盾,我宁愿不读两遍 我认为这个问题与Spring Batch不同:一个阅读器、多个处理器和编写器,因为我需要按顺序处理项目,而不是并行处理。

  • 问题内容: 我有2个文件夹,每个文件夹包含数十个批处理文件()。 批处理文件包含类似于以下内容的文本 要么 在Java中,我列出了每个文件夹中的每个批处理,并循环浏览列表,执行每个批处理文件,如下所示: 方法返回后,删除批处理文件。 问题是,批处理文件中的所有命令均未运行(我请求删除或删除的文件和文件夹均未运行),并且Java进程只是继续并删除了批处理文件本身。 批处理文件位于文件夹中 写下来之后