我对@StepScope中的chunk-oriented processing感到困惑:
我可以说读了200万条记录。所以我想分批运行我的spring batch应用程序。假设要读取,处理和写入2000个项目,然后再读取第2001至4000个项目,处理,写入等。
问题是,如果我 不 使用@StepScope,则该批次将知道它必须读取2001st项目,而不是重新读取已经存在的项目看过?
答案 0 :(得分:1)
是的,即使不使用@StepScope
,阅读器也会读取下一个块,而不会再次重新读取同一块。
实际上,必须使用范围step
才能使用作业/步骤执行上下文中的属性后期绑定。此处的更多详细信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/step.html#late-binding
因此,如果您的阅读器不需要从作业/步骤执行上下文访问作业参数或属性,则不需要对其进行范围界定,并且仍将逐块读取数据。总之,步骤范围和面向块的处理之间没有任何关系。