据我了解,如果没有更多要阅读的项目,读者应该返回“null”,表示“阅读结束”。如果那是读者的合同,我假设框架会理解这个'null'并且不会调用ReadListener的'afterRead'。但是,它似乎是用“null”参数调用“afterRead”。
我们正在使用 spring-batch 2.1.7。请让我们知道这是预期的行为还是我在这里遗漏了什么。
以下是我们的作业配置:
<batch:job id="job">
<batch:listeners>
<batch:listener ref="jobExecutionListener"></batch:listener>
</batch:listeners>
<batch:step id="myStep">
<batch:tasklet>
<batch:listeners>
<batch:listener ref="myReadListener" />
<batch:listener ref="myTransformerListener" />
<batch:listener ref="myWriteListener" />
</batch:listeners>
<batch:chunk reader="myReader" processor="myTransformer"
writer="myWriter" commit-interval="1000" />
</batch:tasklet>
</batch:step>
</batch:job>