spring批处理将新参数添加到现有作业参数中



我有一个接口实现,它将我的请求映射到JobParameters

@Component("myMapper")
public class MyMapper implements RequestMapper {
@Override
public JobParameters map(Request request) {
JobParametersBuilder parameters = new JobParametersBuilder();
parameters.addString("name", request.getValue(NAME));
parameters.addString("test", request.getValue(TEST));
return parameters.toJobParameters();
}
}

在我的JobRunner类中,在执行作业之前,我必须添加一个不在请求对象中的附加参数:

public Response runJob(final Request request, final String id) {
Job job = getJob(request);
JobParameters parameters = myMapper.map(request);
//i want to add id to parameters
JobExecution execution;
execution = jobLauncher.run(job, parameters);
}

如何添加此新参数?

JobParameters中没有直接添加参数的方法,需要使用JobParametersBuilder

您需要从现有的JobParameters构造JobParametersBuilder,并在生成器中添加参数,然后再次从生成器中获取JobParameters

JobParameters parameters = myMapper.map(request);
JobParametersBuilder parametersBuilder = new JobParametersBuilder(parameters);
parametersBuilder.addString("id", id);
JobParameters newParameters = parametersBuilder.toJobParameters();

最新更新