Java 在Spring批处理侦听器中处理异常的正确方法是什么?

Java 在Spring批处理侦听器中处理异常的正确方法是什么?,java,spring,listener,spring-batch,Java,Spring,Listener,Spring Batch,当使用Spring批处理中的ItemWriteListener(或类似)时,处理侦听器委托引发的已检查异常的正确方法是什么 例如: public class MyClass implements ItemWriteListener<MyDTO> { // fields and constructor omitted @Override public void beforeWrite(List<MyDTO> items) { try

当使用Spring批处理中的
ItemWriteListener
(或类似)时,处理侦听器委托引发的已检查异常的正确方法是什么

例如:

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
}
公共类MyClass实现ItemWriteListener{
//省略字段和构造函数
@凌驾
写前公共作废(列表项){
试一试{

repository.loadAll();//如果读写器依赖于此操作,则抛出运行时异常。这样,您可以确保SpringBatch正确处理事务和SpringBatch db表的更新。

一个重要方面:是否希望事务(和处理的块)回滚?beforeWrite()在整个区块的事务内部运行,因此“rethrow”将导致回滚(请参阅javadoc)@MichaelPralow,这正是我所需要的,因为这里的异常指示进程的无效状态。