Spring Batch,在writer中获取stepExecution?

时间:2018-06-08 14:50:12

标签: spring spring-boot spring-batch

我试图从StepExecution获取readCount,以便我可以在writer()中将其写入我的数据库。

有没有办法在StepExecution的写入(JdbcBatchItemWriter)部分中获取Step,以便我可以在其上调用getReadCount()

3 个答案:

答案 0 :(得分:2)

您可以使用@AfterStep@AfterWrite注释为您的方法添加注释。 例如

@AfterStep
public void afterStep(StepExecution stepExecution) {
   //do your thing
}

但是你需要扩展JdbcBatchItemWriter或包装它。它取决于你如何进行。

答案 1 :(得分:0)

你将给予的课程如下:
公共类CustomStepListener实现StepExecutionListener {

@Override
public void beforeStep(StepExecution stepExecution) {
    System.out.println("StepExecutionListener - beforeStep");
}

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

}

并配置此类配置读写器的类



答案 2 :(得分:0)

我设法找到了解决办法。

我在我的RowMapper中放了一个incrementor,它将rowCount编写到正在初始化的DTO中,每次调用rowMapper时都会递增(等于传递给它的行数)。

这意味着,由于我的控制表编写器将使用最新的实例化DTO,它将具有可以写入我的表的正确行数。