首页 > 解决方案 > Spring Batch 是如何分块读取的?它是否保持光标?

问题描述

我想了解分块读取数据的底层机制。我实际上想手动复制该代码。我们从中读取的数据库不支持 SQL 查询,这些查询可以限制读取的记录数。所以我想看看我是否可以以某种方式将读取限制为特定大小(就像弹簧批处理如何将一次读取限制为特定块大小一样)。

谢谢!

标签: javadatabasespringjakarta-eespring-batch

解决方案


Spring Batch 调用读取器,直到达到配置的块大小或数据源耗尽(即读取器返回null)。更具体地说,它是ChunkProvider调用阅读器提供一大块项目并将其交给ChunkProcessor. 您可以在ChunkOrientedTasklet类中找到代码的相关部分。

chunkOrientedProcessing部分中的伪代码示例解释了块处理。


推荐阅读