gpt4 book ai didi

java - Spring Batch在步骤内访问作业参数

转载 作者:IT老高 更新时间:2023-10-28 13:45:57 25 4
gpt4 key购买 nike

我有以下 Spring Batch Job 配置:

@Configuration
@EnableBatchProcessing
public class JobConfig {

@Autowired
private JobBuilderFactory jobBuilderFactory;

@Autowired
private StepBuilderFactory stepBuilderFactory;

@Bean
public Job job() {
return jobBuilderFactory.get("job")
.flow(stepA()).on("FAILED").to(stepC())
.from(stepA()).on("*").to(stepB()).next(stepC())
.end().build();
}

@Bean
public Step stepA() {
return stepBuilderFactory.get("stepA").tasklet(new RandomFailTasket("stepA")).build();
}

@Bean
public Step stepB() {
return stepBuilderFactory.get("stepB").tasklet(new PrintTextTasklet("stepB")).build();
}

@Bean
public Step stepC() {
return stepBuilderFactory.get("stepC").tasklet(new PrintTextTasklet("stepC")).build();
}

}

我开始使用以下代码:

    try {
Map<String,JobParameter> parameters = new HashMap<>();
JobParameter ccReportIdParameter = new JobParameter("03061980");
parameters.put("ccReportId", ccReportIdParameter);

jobLauncher.run(job, new JobParameters(parameters));
} catch (JobExecutionAlreadyRunningException | JobRestartException | JobInstanceAlreadyCompleteException
| JobParametersInvalidException e) {
e.printStackTrace();
}

如何从作业步骤中访问 ccReportId 参数?

最佳答案

Tasklet.execute() 方法接受参数 ChunkContext,Spring Batch 会在其中注入(inject)所有元数据。所以你只需要通过这些元数据结构挖掘作业参数:

chunkContext.getStepContext().getStepExecution()
.getJobParameters().getString("ccReportId");

或其他选项是以这种方式访问​​作业参数映射:

chunkContext.getStepContext().getJobParameters().get("ccReportId");

但这会给你 Object 并且你需要将它转换为字符串。

关于java - Spring Batch在步骤内访问作业参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32465142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com