1

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

}

} 
4

1 回答 1

0

代替skip-limit="10"

利用

                <batch:skip-policy>
                    <bean class="org.springframework.batch.core.step.skip.AlwaysSkipItemSkipPolicy" scope="step"/>
                </batch:skip-policy>
于 2014-03-28T15:22:23.360 回答