Spring Batch: ReadListener afterRead вызывается, даже когда читатель возвращает ноль - PullRequest
0 голосов
/ 07 апреля 2011

Насколько я понимаю, читатель должен возвращать '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>

1 Ответ

1 голос
/ 11 апреля 2011

Насколько я помню, это правильно. Ноль - это конечное значение, но это значение для чтения.

Как следствие, afterReading выполняется с нулем, и ваш код должен иметь дело с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...