我正在开发Spring Batch:我正在从FlatFile读取数据并使用Jdbc连接将从文件读取的记录保存到数据库。在执行此操作时,我已配置了一个侦听器,如果在读取或写入数据时生成错误,则会调用该侦听器。我将10条记录上传到数据库中,其中2条记录有错误。它正在根据需要正确插入8个记录,但是onSkipInWrite()方法没有给出实际被跳过的2个记录,但是它打印出整个10个记录的批次,并且具有相同的例外。我应该如何筛选出哪些记录没有被跳过,实际上该方法会说明您将获得整批中跳过的确切记录。请帮助我....等待回应.....谢谢
在Audit.xml中配置 示例示例:
<step id="step1" >
<tasklet allow-start-if-complete="true">
<chunk reader="Reader" writer="Writer" commit-interval="10" skip-limit="10">
<skippable-exception-classes>
<include class="java.lang.Exception" />
</skippable-exception-classes>
</chunk>
<listeners>
<listener ref="Listener" />
</listeners>
</tasklet>
</step>
我在下面写了一个Listener类是示例:
public class Listener implements SkipListener {
@Override
public void onSkipInProcess(Object item, Throwable throw) {
System.out.print ("Error in the record :" + item.gettoString() + " Type of Error : " + throw.getClass());
}
@Override
public void onSkipInRead(Throwable throw) {
}
@Override
public void onSkipInWrite(Object item, Throwable throw) {
System.out.print ("Error in the record :" + item.gettoString() + " Type of Error : " + throw.getClass());
}
}
答案 0 :(得分:0)
而不是skip-limit="10"
使用
<batch:skip-policy>
<bean class="org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy" scope="step"/>
</batch:skip-policy>