java - 春季批处理将新参数添加到现有作业参数
问题描述
我有一个接口实现,将我的请求映射到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);
}
如何添加这个新参数?
解决方案
没有JobParameters
直接添加参数的方法,需要使用JobParametersBuilder
.
您需要JobParametersBuilder
从现有JobParameters
构建并在构建器中添加参数,然后再次JobParameters
从构建器获取。
JobParameters parameters = myMapper.map(request);
JobParametersBuilder parametersBuilder = new JobParametersBuilder(parameters);
parametersBuilder.addString("id", id);
JobParameters newParameters = parametersBuilder.toJobParameters();
推荐阅读
- php - 为什么 mysqli prepare 语句没有清理数据
- c++ - 模板类中的 typedef 语句
- javascript - 箭头函数不起作用。普通人会。为什么?
- html - CSS 和 Boostrap:在 div 中拟合图像或轮播
- mongodb - 为什么我需要指定 $switch 默认语句,而它是可选的?
- angular - filter() 仅返回所选产品的第一个字母
- javascript - 仅在对象未定义时才将属性添加到对象
- node.js - Mongoose + 聚合日期格式问题
- c# - IE“增强保护模式(122)”:“122”是什么意思?
- java - 如何正确比较坐标?