以前,我们使用的是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>
最佳答案
ItemWriter
在BATCH-2624
中成为必需项。根据问题链接中的信息,此更改在版本3.0.10
,4.0.2
和4.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>