在spring-batch中,如果出现块错误,如何获取异常?

时间:2016-01-15 19:49:27

标签: spring-batch

Spring批处理提供了一个侦听器,用于捕获何时发生块错误(@AfterChunkError批注或ChunkListener.afterChunkError接口)。两者都接收ChunkContext,API说:

  

参数

     

context - 包含导致该异常的异常的块上下文   潜在的回滚。

但是,我没有在ChunkContext界面上看到任何可以让我接受异常的内容。如何从ChunkContext到相关的异常?

2 个答案:

答案 0 :(得分:1)

您可以实施ItemReadListenerItemProcessListenerItemWriteListener(或更简单地ItemListenerSupport)中的一项或多项,而不是实施ChunkListener

他们分别提供访问:

void onReadError(java.lang.Exception ex)
void onProcessError(T item, java.lang.Exception e)
void onWriteError(java.lang.Exception exception, java.util.List<? extends S> items)

我知道这会强制您实现多个方法来管理块的每个方面,但是您可以编写一个自定义方法,该方法需要Exception并从这3个方法中调用它。

答案 1 :(得分:1)

异常位于ChunkListener.ROLLBACK_EXCEPTION_KEY属性中:

context.getAttribute(ChunkListener.ROLLBACK_EXCEPTION_KEY)