Java 如何在spring批处理中计算Tasket中的项目?

Java 如何在spring批处理中计算Tasket中的项目?,java,spring,spring-batch,Java,Spring,Spring Batch,我有一个Tasklet,想计算处理的项目。然后,一个普通的StepExecutionListener应该能够在afterStep()中读取那些已处理的项目计数。: 如何将处理过的项目放入tasklet中的步骤执行中?有两种方法: 使用contribution.incrementWriteCount(项目)从StepContribution增加写入计数 从步骤执行设置写入计数。您可以从当前的ChunkContext访问步骤执行。您需要调用以检索步骤上下文,然后调用以检索步骤执行,最后,您可以使用

我有一个
Tasklet
,想计算处理的项目。然后,一个普通的
StepExecutionListener
应该能够在
afterStep()中读取那些已处理的项目计数。


如何将处理过的项目放入tasklet中的
步骤执行中?

有两种方法:

  • 使用
    contribution.incrementWriteCount(项目)从
    StepContribution
    增加写入计数
  • 步骤执行
    设置写入计数。您可以从当前的
    ChunkContext
    访问
    步骤执行。您需要调用以检索
    步骤上下文
    ,然后调用以检索
    步骤执行
    ,最后,您可以使用设置写入计数
示例代码为:

public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
    int items = dao.deleteItems();
    contribution.incrementWriteCount(items);
    // OR: chunkContext.getStepContext().getStepExecution().setWriteCount(items);
    return RepeatStatus.FINISHED;
}

有两种方法可以做到这一点:

  • 使用
    contribution.incrementWriteCount(项目)从
    StepContribution
    增加写入计数
  • 步骤执行
    设置写入计数。您可以从当前的
    ChunkContext
    访问
    步骤执行。您需要调用以检索
    步骤上下文
    ,然后调用以检索
    步骤执行
    ,最后,您可以使用设置写入计数
示例代码为:

public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
    int items = dao.deleteItems();
    contribution.incrementWriteCount(items);
    // OR: chunkContext.getStepContext().getStepExecution().setWriteCount(items);
    return RepeatStatus.FINISHED;
}

由于您使用的是tasklet而不是块,因此经典的“读取/处理/写入”不适用。如果要将值从步骤执行转移到同一步骤上的stepExecutionListener,只需在stepExecutionContext中放置一个键/值:

   int items=dao.deleteItems();
   chunkContext.getStepContext().getStepExecution().getExecutionContext().putInt("MYKEY", items);
在StepExecutionListener afterStep(StepExecution StepExecution)方法中:


由于您使用的是tasklet而不是块,因此经典的“读取/处理/写入”不适用。如果要将值从步骤执行转移到同一步骤上的stepExecutionListener,只需在stepExecutionContext中放置一个键/值:

   int items=dao.deleteItems();
   chunkContext.getStepContext().getStepExecution().getExecutionContext().putInt("MYKEY", items);
在StepExecutionListener afterStep(StepExecution StepExecution)方法中:

这可能会帮助你,这可能会帮助你。