0

据我了解,如果没有更多要阅读的项目,读者应该返回“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>
4

1 回答 1

1

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

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

于 2011-04-11T08:30:37.960 回答