Spring Batch:根据数据委托处理器

时间:2013-10-03 14:01:21

标签: spring-batch

我对春季批次相当新,我很欣赏一些方向...

我正在使用chunk处理器。我想创建一个取决于文件名的作业,将选择一个特定的处理器。

例如: 对于file:testfile-1.txt,使用processor:TestFileProcessor1.java 对于file:testfile-2.txt,使用processor:TestFileProcessor2.java

我更喜欢只有一个块处理器并且在正确的处理器中有先前的任务挂钩

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用JobExecutionDecider将代码转移到正确的步骤 当读者和编写者被定义时,你有一个抽象的步骤(BaseStep),但没有处理器和定义3绑定正确处理器的具体步骤

<batch:step id="StepTestFile1" parent="BaseStep">
  <batch:processor ref="path.to.TestFileProcessor1" />
</batch:step>

等等。
在你JobExecutionDecider中,你可以根据文件名(伪代码)去纠正步骤:

class MyDecider implements JobExecutionDecider {
  public FlowExecutionStatus decide(JobExecution jobExecution,StepExecution stepExecution) {
    if(filename is testfile-1.txt) return new FlowExecutionStatus("StepTestFile1");
    if(filename is testfile-2.txt) return new FlowExecutionStatus("StepTestFile2");
    if(filename is testfile-3.txt) return new FlowExecutionStatus("StepTestFile3");
  }
}