我正在使用配置了注释的Spring Batch 3.0.3来创建一个批处理作业,该作业重复一个不确定次数的步骤.
我的第一步将在内存中读取重复步骤中使用的项目列表.我想重复一遍迭代这个作业范围的列表.
如何配置我的作业以运行相同的步骤x次?我已经在xml中看到了一个步骤,指定了下一步要运行的步骤.我想我可以在无限循环中相互指出两个步骤,直到列表被迭代.这是否有效,是否有办法用注释做到这一点?下面是我的主要配置文件,其中一些代码无效.
@ComponentScan(excludeFilters = @Filter(IgnoreDuringScan.class))
@EnableAutoConfiguration
@EnableBatchProcessing
@Loggable
public class BatchCrudConfiguration
{
@Bean
public Job batchCRUDJob(JobBuilderFactory jobBuilderFactory, Step[] processSheetSteps)
{
JobBuilder jobBuilder = jobBuilderFactory.get("batchCRUDJob").incrementer(new RunIdIncrementer());
FlowBuilder jobFlowBuilder = jobBuilder.flow(processSheetSteps[0]);
for (int i = 1; i < processSheetSteps.length; i++)
{
jobFlowBuilder = jobFlowBuilder.next(processSheetSteps[i]);
}
return jobFlowBuilder.end().build();
}
@Bean
public Step[] processSheetSteps(
StepBuilderFactory stepBuilderFactory,
RawDataReader[] readers,
DelegatingWriter writer,
DelegatingProcessor processor,
@Value("${batchcrud.chunkSize}") int chunkSize)
{
int numberOfReaders = readers.length;
Step[] steps = new Step[numberOfReaders];
for (int i = 0; i < numberOfReaders; i++)
{
steps[i] = stepBuilderFactory.get("processSheet" + i + "Step").
chunk(chunkSize).reader(readers[i]).processor(processor).writer(writer).build();
}
return steps;
}