java - java.lang.IllegalStateException: 更新 Spring Batch 到 4.1.1 后必须提供 ItemWriter
问题描述
以前,我们使用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>
推荐阅读
- java - 为什么我在使用意图后会收到此错误?
- python - 如何检查两个或多个字符串中的确切子字符串
- java - 为什么在实例初始化程序中不允许递增(`x++;`)但未声明的字段,但如果包装到匿名类中就可以了?
- swift - 当您只有一个符合较小类型的变量时,如何调用重载函数?
- python - 使用错误列创建的 Django 表
- python - 解析动态站点
- python - 创建从拆分文本获得的项目列表
- css - 在 react-native 样式表中复制 css 边框和框阴影值时遇到问题
- jquery - 单击侦听器事件不会在 SVG 元素上触发(字体真棒图标)
- python - 如何在 Python 3.7.2 中使用命令“t.print”?