Spring批处理数据读取器在读取项目集合结束时返回额外的空对象?

Posted

技术标签:

【中文标题】Spring批处理数据读取器在读取项目集合结束时返回额外的空对象?【英文标题】:Spring batch datareader returns extra null object on end of collection of read items? 【发布时间】:2010-05-31 12:27:59 【问题描述】:

我正在使用 Spring 批处理 - 使用数据读取器加载项目列表。对于我的每个读者,他们都在列表末尾返回一个额外的空对象。

以前有人见过吗?我做错了什么?

【问题讨论】:

您需要提供更多信息。如:数据源是什么?提供一些代码可能会获得更大的吸引力,即使您必须将其简化以获得说明您的问题的示例。您可能会发现,仅仅修补隔离问题就可以帮助您解决问题。 【参考方案1】:

这是正常行为。

阅读器停在一个空元素上。 但是要找到一个空元素,你必须找到它。 结果,发出了 null 元素,但它将是最后一个,并且不会调用 writer。

【讨论】:

【参考方案2】:

听起来您正在从ItemReader 实现read() 方法 http://static.springsource.org/spring-batch/apidocs/org/springframework/batch/item/ItemReader.html

您想要做的是从JdbcCursorItemTeader 实现readCursor(ResultSet rs, int currentRow) 方法 - 这将停止这种行为。 http://static.springsource.org/spring-batch/apidocs/org/springframework/batch/item/database/JdbcCursorItemReader.html

【讨论】:

以上是关于Spring批处理数据读取器在读取项目集合结束时返回额外的空对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中从 Mongodb 读取集合数据并定期发布到 kafka 主题中

Spring批处理作业从多个来源读取

Spring Batch - MongoItemReader 未读取所有记录

C语言文件读取fscanf(),该怎么处理

spring读取jdbc(file方式)

spring batch读取数据库怎么用