Spring batch 如何在SpringBatch中将参数从作业传递到FlowStep?

Spring batch 如何在SpringBatch中将参数从作业传递到FlowStep?,spring-batch,Spring Batch,在一个特定的spring批处理作业中,我使用了一个流(因为它是一个可重用的步骤序列)作为步骤 我必须将一组参数传递给流 我该怎么做 我的工作定义如下: @Component public class MyJob { @Bean public Job myJob(@Qualifier("myFlowStep") Flow myFlow) { return jobBuilderFactory.get("myJob").increment

在一个特定的spring批处理作业中,我使用了一个
(因为它是一个可重用的步骤序列)作为
步骤

我必须将一组参数传递给

我该怎么做

我的工作定义如下:

@Component
public class MyJob {
   @Bean
   public Job myJob(@Qualifier("myFlowStep") Flow myFlow) {
      return jobBuilderFactory.get("myJob").incrementer(new RunIdIncrementer())
        .start(someFirstStep())
        .next(myFlowStep(myFlow)).
        .build();
   }

   ...
   @Bean
   public Step myFlowStep(Flow myFlow) {
      // Need to pass parameters to the flow
      FlowStepBuilder flowStepBuilder = stepBuilderFactory.get("myFlowStep").flow(myFlow);
      return flowStepBuilder.build();
   }
   ...
}

您可以使flow bean定义步骤的范围和作业参数的使用:

@Bean
@StepScope
public Flow myFlow(@Value("#{jobParameters['name']}") String name) {
    // use job parameter name here
    return null;
}

@Bean
public Step myFlowStep(Flow myFlow) {
  // Need to pass parameters to the flow
  FlowStepBuilder flowStepBuilder = stepBuilderFactory.get("myFlowStep").flow(myFlow);
  return flowStepBuilder.build();
}

你指的是什么样的参数,你指的是工作参数吗?你能举个例子吗?在流定义(
flow myFlow
)或FowStep定义中需要这些参数吗?您能否共享定义
Flow myFlow
的方法?我这样问是因为如果您需要流定义中的这些参数,您可以将定义流步骤的方法限定为使用其中作业参数的后期绑定。是的。这些是作业参数。它将被传递到流,在流的一个步骤中,参数值决定了在该步骤中进一步处理的方式。这将作为启动参数作为作业参数传递给作业。好的,谢谢您的澄清。我根据您的评论添加了一个答案。如果答案回答了您的问题,请接受。请注意,接受答案不同于向上投票。您可以在步骤级别使用相同的方法,但这次您需要使用作业范围(因为步骤bean不能是步骤范围)。