Spring batch Spring批处理:需要更好的作业配置

Spring batch Spring批处理:需要更好的作业配置,spring-batch,Spring Batch,我的Spring批处理应用程序处理5种不同类型文件中的1种。所有5种类型的流程都完全相同。我的配置相当长而且笨拙。有人能帮我通过重用流来压缩它吗 这是我能想到的最好的办法: 返回jobBuilderFactory.get(CommonConstants.BATCH\u作业\u分发) .listener(jobListener) .start(retrieveFileStep()) .next(createFileJobDetailStep(fileJobDetailTasklet)) .next

我的Spring批处理应用程序处理5种不同类型文件中的1种。所有5种类型的流程都完全相同。我的配置相当长而且笨拙。有人能帮我通过重用流来压缩它吗

这是我能想到的最好的办法:

返回jobBuilderFactory.get(CommonConstants.BATCH\u作业\u分发)
.listener(jobListener)
.start(retrieveFileStep())
.next(createFileJobDetailStep(fileJobDetailTasklet))
.next(文件类型决策器)
.from(fileTypeDecider).on(FileType.YearEnd.name()).to(yearEndStep)
.from(yearEndStep).on(“ERROR”).to(moveFileToErrorStep(fileoperationtasklet))
.from(yearEndStep).on(“SUCCESS”).to(moveFileToProcessedStep(fileoperationtasklet))
.from(fileTypeDecider).on(FileType.Quarterly.name()).to(quarterlyStep)
.from(quartlystep).on(“ERROR”).to(moveFileToErrorStep(fileoperationtasklet))
.from(quartlystep).on(“SUCCESS”).to(moveFileToProcessedStep(fileoperationtasklet))
//[再重复3次…]

我想要一个更好的方式来写这个。谢谢。

我最终创建了一个子流,并在整个作业配置中重用该子流

public Flow flow(String flowName, Step step, Tasklet fileOperationsTasklet) {
    return new FlowBuilder<Flow>(flowName)
            .start(step)
            .from(step).on("ERROR").to(moveFileToErrorStep(fileOperationsTasklet))
            .from(step).on("SUCCESS").to(moveFileToProcessedStep(fileOperationsTasklet))
            .end();
}

我最终创建了一个子流,并在整个作业配置中重用该子流

public Flow flow(String flowName, Step step, Tasklet fileOperationsTasklet) {
    return new FlowBuilder<Flow>(flowName)
            .start(step)
            .from(step).on("ERROR").to(moveFileToErrorStep(fileOperationsTasklet))
            .from(step).on("SUCCESS").to(moveFileToProcessedStep(fileOperationsTasklet))
            .end();
}

这是按顺序执行的,而不是创建为单独的作业,或者使用基于文件类型的分区器。不,它不是按顺序执行的。每个作业将只有一种文件类型。这是按顺序执行的,而不是按单独作业或基于文件类型使用分区器创建。不,它不是按顺序执行的。每个作业只有一种文件类型。