我是Spring Batch的新手,我遇到了一些问题 . 我有一个 spring 批处理步骤,它有一个阅读器,一系列带有2个处理器的项目处理器和一个编写器 . 当第一个处理器出现错误时,我想阻止第二个处理器运行 . 我尝试使用StepExecutionListener返回ExistStatus.FAILED但没有成功 . 我还尝试添加一个ItemProcessListener来对onProcessError方法执行一些操作,但没有 . 有关如何做到这一点的任何想法?

这是我用来配置步骤的代码 .

import java.util.ArrayList;
import java.util.List;

import org.springframework.batch.core.Step;
import org.springframework.batch.core.configuration.annotation.StepBuilderFactory;
import org.springframework.batch.item.ItemProcessor;
import org.springframework.batch.item.ItemReader;
import org.springframework.batch.item.ItemWriter;
import org.springframework.batch.item.support.CompositeItemProcessor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class StepConfig {

    @Autowired
    private StepBuilderFactory stepBuilderFactory;

    @Autowired
    private ItemReader<String> flatFileItemReader;

    @Autowired
    private ItemWriter<ResponseTO> itemWriter;

    @Bean
    public Step buildStep() {
              return stepBuilderFactory.get("step")
                .<String, ResponseTO> chunk(1)
                .reader(flatFileItemReader)
                .processor(chainOfItemsProcessors())
                .writer(itemWriter)
                .faultTolerant()
                .build();
    }

    private CompositeItemProcessor<String, ResponseTO> chainOfItemsProcessors() {
        CompositeItemProcessor<String,ResponseTO> compositeProcessor = new CompositeItemProcessor<>();
        List<ItemProcessor<?, ?>> itemProcessors = new ArrayList<>();
        itemProcessors.add(processor1);
        itemProcessors.add(processor2);
        compositeProcessor.setDelegates(itemProcessors);
        return compositeProcessor;
    }
}