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)方法中:
这可能会帮助你,这可能会帮助你。