私が理解している限り、リーダーは、読み取るアイテムがこれ以上ない場合、「読み取り終了」を示す「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>