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

如何在ItemReader中读取多个项目

戚俊美
2023-03-14

以下是我的Spring批处理用例。

>

处理记录。

将处理过的记录逐一写入。

我很清楚第2步和第3步的内容,但不知道如何实现一个可以一次性读取所有记录的读卡器。如何将记录逐一传递给项目处理者/编写者?我应该使用tasklet而不是reader/writer吗?

共有1个答案

席兴平
2023-03-14

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

您的ItemReader需要在这个集合上循环并逐个删除项目,然后在处理完所有项目后返回null。

@Kik所说的是其余的由Spring批处理基于您的提交间隔。例如,如果您有10个提交间隔,您的阅读器将读取10个项目,并将这10个项目传递给ItemProcs。然后将它们再次传递给作者。

希望它能澄清

编辑:1)在Spring Batch中,您有多个选项来完成所需的操作。

简单的选择是,创建一个实现ItemReader接口的自定义MyWsItemReader。

-在此类中定义一个方法init(),该方法将调用您的webService,并将结果放入MyWsItemReader的collection属性中。

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

-然后,围绕该步骤配置一个stepListener,并实现beforstep()方法来调用MyWsItemReader的init()。您可以在侦听器中自动连接读卡器以实现这一点。

或者,您的MyWsItemReader也可以实现初始化Bean.然后,您将必须实现后属性集(),在那里您可以调用ws并将结果存储在MyWsItemReader的私有属性中

问候

 类似资料:
  • 是否可以使用spring batch Itemreader(在单个读取器中)读取两个不同的文件,并比较这两个文件中存在的属性(如ID列)。基于这些使用Itemprocessor和Itemwriter的ID的比较,将在新文件中使用Itemwriter写入记录

  • 选项2:(a)创建内部带有SalesReader的DiscountReader(ItemReader方法中的ItemReader)-它为每个正在读取的DiscountObj调用SalesReader。(b)创建SalesWriter将SalesReader获取的日期写入数据库。 在任何情况下,由SalesReader执行的查询的参数都是动态的,因为它必须从当前的DiscountObJ中提取。这是仅

  • 我在java配置中使用spring批处理。(批处理-核心3) 帮我PLZ。

  • 我一直试图弄清楚如何从特定查询中读取我的列表。如果我注释掉其中一个应用程序,get它会从一个文档数据库读取,反之亦然。如何让它同时读取我的两个查询,或者指定一个列表从一个查询中读取,另一个列表从第二个查询中读取?我尝试了第二个查询Spec,不确定这是否是要走的路。 谢谢你 我能够从上一个问题中获得帮助。连接到多个宇宙数据库文档 原始教程:https://docs.microsoft.com/en-

  • 我想设置一个新的批处理作业。 这个作业应该从Rest接口接收一些参数(我正在使用@EnableBatchProcessing进行自动作业扫描)。 我只希望在每次Rest通话中执行一次任务- 我的另一个想法是创建一个ItemReader,它读取JobParameters并创建一个域对象(从参数中),然后处理数据并写入一个虚拟ItemWriter。 我试着这样设置ItemReader: 我试着用这样的

  • 问题内容: 我们的教授让我们用Java进行一些基本的编程,他提供了一个网站以及所有可以注册和提交问题的内容,因为今天我需要做一个例子,我觉得自己处在正确的轨道上,但是我无法找出其余的。这是实际的问题: 这是到目前为止我得到的: 现在,我总是会得到答案,因为我正在阅读单行,如何考虑所有行?谢谢 由于某些奇怪的原因,每次我要执行时都会出现此错误: 无论我使用什么版本的答案,都会出现此错误,该怎么办?