在Spring Batch监听器中处理异常的正确方法是什么?

Nie*_*Wet 4 java spring listener spring-batch

当使用ItemWriteListenerSpring Batch中的(或类似的)时,处理被检查的异常的正确方法是什么?是侦听器的委托?

例如:

public class MyClass implements ItemWriteListener<MyDTO> {
    // fields and constructor omitted

    @Override
    public void beforeWrite(List<MyDTO> items) {
        try {
            repository.loadAll(); // <-- Throws some checked exception
        } catch (Exception e) {
            // What to do here?
        }
    }
    // other methods omitted
}
Run Code Online (Sandbox Code Playgroud)

我该如何处理这个例外?以下是一些想法:

  1. Rethrow in a RuntimeException
  2. 记录异常并让步骤失败,直到它依赖于此侦听器的操作
  3. MyDTO项目上设置一些指示以指示失败

当然,我不能抛出已检查的异常,因为它未在ItemWriteListener接口上声明.

Han*_*ier 5

如果读取器/写入器依赖于此操作,则抛出运行时异常.这样,您可以确保SpringBatch正确处理事务和SpringBatch db-tables的更新.