当前位置: 首页 > 知识库问答 >
问题:

writer中的Spring批处理读取作业参数

东门航
2023-03-14

我当前正在命令行中传递文件名在spring批处理作业中的参数并运行我的作业,spring批处理作业将查找文件并读取、处理和写入该文件。我目前在读取器中的作业参数文件名和读取器文件名,如何才能在处理器和写入器中使用相同的作业参数文件名。

共有1个答案

白哲茂
2023-03-14

访问作业参数的方法之一是将StepExecutionListener实现到处理器/编写器类,以利用其重写的方法beforeStep和afterStep,

public class TestWriter implements ItemWriter<TestData>,StepExecutionListener {

    private String filePath;

    @Override
    public void beforeStep(StepExecution stepExecution) {

        try {
            filePath = (String) stepExecution.getJobExecution().getExecutionContext()
            .get("filePath");
        } catch (Exception e) {
            logger.error("Exception while performing read {}", e);
        }
    }


    @Override
    public void write(List<? extends TestData> items) throws Exception {
        // filePath value read from the job execution can be used inside read use case impl

    }

    @Override
    public ExitStatus afterStep(StepExecution stepExecution) {
        return ExitStatus.COMPLETED;
    }
}

要向jobExecutionContext添加值,可以使用如下所示,

stepExecution.getJobExecution().getExecutionContext().put("path", filePath);
 类似资料:
  • 我正在使用Spring batch进行批处理,在进行批处理之前,我想验证所有作业参数,如productName、productID、开始日期、结束日期、productType,如果这些作业参数为null或包含错误值,我必须使验证步骤失败,并使作业失败。 我已经编写了验证步骤和Tasklet,在我的Tasklet中,我计划处理作业参数验证(对所有作业参数执行空检查)。因为我是第一次做Spring批处

  • 我有以下工作要处理在一定的时间间隔或特别的基础上。 作业中的步骤如下: 我也想要用户界面,在那里我可以触发一个特别的基础上的工作,而且我应该能够提供参数从用户界面。 我想用Spring batch来完成这个任务,但它更多的是用于读->处理->写之类的工作。这里,在第一步中,我正在生成由第二步读取的数据。我不确定我是否还可以使用Spring batch来实现这个,或者有更好的方法来实现这个。

  • 我最近提出了这个问题,但我认为我对我的目标不够明确。

  • 我有以下Spring批处理作业配置: 我用以下代码开始这项工作: 如何从作业步骤访问参数?

  • 我有一个Spring批处理tasklet,我不知道如何从中失败。我想检查某些参数,如果它们不存在,则在该步骤中使作业失败。 注释掉的行是我试图让工作退出的行。有人有过这样的经历吗?