首页 > 解决方案 > 春季批处理将新参数添加到现有作业参数

问题描述

我有一个接口实现,将我的请求映射到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 类中,我必须在执行作业之前添加一个不在 Request Object 中的附加参数:

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);

}

如何添加这个新参数?

标签: javaspringspring-bootspring-batch

解决方案


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

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

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

推荐阅读