弹簧批量弹簧启动器读卡器的异常处理

时间:2015-11-21 12:27:58

标签: spring spring-boot spring-batch

我使用reader在spring批处理中读取db表中的数据。

如果表不存在,我想处理JdbcSQLException并记录错误。我试图在读者中捕获异常,但我无法捕获异常。我应该在哪里抓到它?

2 个答案:

答案 0 :(得分:0)

使用JobExecutionDecider检查表格是否存在。
如果表格不存在,则记录错误并移至作业结束,否则继续正常工作。

答案 1 :(得分:0)

您可以在读者身上声明ItemReadListener

<batch:step>
    <batch:tasklet>
        <batch:chunk reader="reader" writer="writer" />
        <batch:listeners merge="true">
            <batch:listener>
                <bean class="xx.xx.xx.YourListener"/>
            </batch:listener>
        </batch:listeners>
    </batch:tasklet>    
</batch:step>

在这个监听器中,您可以使用3种方法:

public class YourListener<T> implements ItemReadListener<T> {

    @Override
    public void beforeRead() {}

    @Override
    public void afterRead(T item) {}

    @Override
    public void onReadError(Exception ex) {}

}

现在针对您的情况,您需要检查方法onReadError中的异常类型:

@Override
public void onReadError(Exception ex) {

     if (ex instanceof JdbcSQLException) {
         // Do your thing
     }
}