我正在研究 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());
}
}