Spring Batch:即使读者返回null,也会调用readListener afterRead

时间:2011-04-07 14:56:26

标签: spring-batch

据我所知,如果没有更多的项目需要阅读,读者应该返回'null',表示“读取结束”。如果这是读者的合同,我认为框架会理解这个'null'并且不会调用ReadListener的'afterRead'。但是,它似乎是用'null'参数调用'afterRead'。

我们正在使用弹簧批次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>

1 个答案:

答案 0 :(得分:1)

据我记忆,这是正确的。 Null是结束值,但它是读取值。

因此,afterReading以null执行,您的代码必须处理此问题。