我正在扩展ItemListenerSupport来捕获在读取/处理/写入步骤中遇到的错误,例如此代码段。

   @Override
    public void onWriteError(Exception ex, List<? extends BaseDomainDataObject> items) {
        logger.error("Encountered error on write", ex);

        String msgBody = ExceptionUtils.getStackTrace(ex);
        numProcessedMap.computeIfAbsent("numErrors", val -> items.size());
        errorMap.put(numErrors.addAndGet(1), msgBody);
    }


如何将步骤中或工作中在地图中累积的所有错误都放入ExecutionContext(最好)?

最佳答案

唯一的方法是创建StepExecutionListener并将StepExecutionContext注入到ItemListenerSupport中的自定义StepExecution#beforeStep()中。
使用JobExecutionContextJobExecutionContext#beforeJob()也是如此。

要么。更轻松地,让您的自定义ItemListenerSupport实现StepExecutionListenerJobExectutionListener

10-07 16:14