以前,我们使用的是Spring Batch 3.0.6,并尝试将其更新为4.1.1。我的工作只有一个ItemReader和一个ItemProcessor-没有提供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中成为必需项。根据问题链接中的信息,此更改在版本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>

09-11 11:10