Spring batch 如何在SpringBatch中将参数从作业传递到FlowStep?
在一个特定的spring批处理作业中,我使用了一个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
流
(因为它是一个可重用的步骤序列)作为步骤
我必须将一组参数传递给流
我该怎么做
我的工作定义如下:
@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不能是步骤范围)。