java.lang.IllegalStateException:更新spring批次到4.1.1后必须提供ItemWriter

java.lang.IllegalStateException: ItemWriter must be provided after updating spring batch to 4.1.1

之前,我们使用的是 Spring Batch 3.0.6,并尝试将其更新为 4.1.1。我的工作只有 ItemReaderItemProcessor - 没有提供 ItermWriter。更新前它工作正常。

现在,我得到:

java.lang.IllegalStateException: ItemWriter must be provided.

与之前的版本相比有什么变化?

    <job id="myJob" parent="baseJob">
        <step id="myStep" parent="baseStep">
            <tasklet>
                <chunk reader="myItemReader" processor="myProcessor"
                       commit-interval="1" skip-limit="100000" retry-limit="1">
                    <skippable-exception-classes>
                        <include class="ExceptionClass"/>
                    </skippable-exception-classes>
                    <retryable-exception-classes>
                        <include class="ExceptionClass"/>
                    </retryable-exception-classes>
                </chunk>
            </tasklet>
            <listeners merge="true">
                <listener ref="promotionListener"/>
                <listener ref="skippableExceptionListener"/>
            </listeners>
        </step>
    </job>

ItemWriterBATCH-2624 中成为强制性的。根据问题 link 的信息,此更改在版本 3.0.104.0.24.1.0

之后生效

如果你真的不需要 ItemWriter ,你可以实现一个虚拟的:

public class NoOpItemWriter implements  ItemWriter<Object>{

  @Override
  public void write(List<? extends Object> items) throws Exception {
  }
}

并配置使用它:

<bean id="noOpItemWriter" class="org.foo.bar.NoOpItemWriter"/>

<chunk reader="myItemReader" processor="myProcessor" writer="noOpItemWriter">
    .....           
</chunk>