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 に答える