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。我的工作只有 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
中成为强制性的。根据问题 link 的信息,此更改在版本 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>
之前,我们使用的是 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
中成为强制性的。根据问题 link 的信息,此更改在版本 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>