gpt4 book ai didi

spring-batch - 如何在 ItemReader 中读取多个项目

转载 作者:行者123 更新时间:2023-12-04 05:15:39 24 4
gpt4 key购买 nike

以下是我的 Spring Batch 用例。

  1. 从 Web 服务读取输入。 Web 服务将返回所有记录。

  2. 处理记录。

  3. 将处理过的记录一一写入。

我很清楚第 2 步和第 3 步,但无法弄清楚如何实现一个可以一次性读取所有记录的阅读器。如何将记录一一传递给项目处理器/作者?我应该使用 tasklet 而不是读写器吗?

最佳答案

您的 WebService 将返回什么?我猜是对象的集合!

您的 ItemReader 需要在此集合上循环并逐个删除项目,然后在它们全部处理完毕后返回 null。

@Kik 所说的是其余部分由 Spring 批处理根据您的提交间隔处理。例如,如果您的 commit0interval 为 10,您的阅读器将阅读 10 个项目,将这 10 个项目传递给 ItemProc。然后再次将它们传递给作者。

希望澄清

编辑:1) 在 Spring Batch 中,您有多个选项来做您需要的事情。

Easy Option,创建一个实现 ItemReader 接口(interface)的自定义 MyWsItemReader。

-在这个类中定义一个方法init(),它将调用你的webService并将结果放入MyWsItemReader的集合属性中。

- 从接口(interface)实现方法 read()。 (仔细阅读文档中的联系人 - 传递集合的所有元素时必须返回 null)

-然后,围绕步骤配置一个 stepListener 并实现 beforeStep() 方法来调用 MyWsItemReader 的 init()。您可以在监听器中自动连接阅读器来完成此操作。

另外,您的 MyWsItemReader 也可以实现 InitializingBean。那么你必须实现 afterPropertySet() 你可以调用 ws 并将结果存储在 MyWsItemReader 的私有(private)属性中

问候

关于spring-batch - 如何在 ItemReader 中读取多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16567196/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com