没有@StepScope的块处理

时间:2018-09-25 15:48:18

标签: spring-batch

我对@StepScope中的chunk-oriented processing感到困惑:

我可以说读了200万条记录。所以我想分批运行我的spring batch应用程序。假设要读取,处理和写入2000个项目,然后再读取第2001至4000个项目,处理,写入等。

问题是,如果我 使用@StepScope,则该批次将知道它必须读取2001st项目,而不是重新读取已经存在的项目看过?

1 个答案:

答案 0 :(得分:1)

是的,即使不使用@StepScope,阅读器也会读取下一个块,而不会再次重新读取同一块。

实际上,必须使用范围step才能使用作业/步骤执行上下文中的属性后期绑定。此处的更多详细信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/step.html#late-binding

因此,如果您的阅读器不需要从作业/步骤执行上下文访问作业参数或属性,则不需要对其进行范围界定,并且仍将逐块读取数据。总之,步骤范围和面向块的处理之间没有任何关系。