Насколько я понимаю, читатель должен возвращать 'null', если больше нет элементов для чтения, указывая 'end-of-read'. Если это контракт для читателя, я предполагал, что фреймворк будет понимать это «ноль» и не будет вызывать «afterRead» для ReadListener. Однако кажется, что он вызывает afterRead с параметром null.
Мы используем подпружиненную партию 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>