当有人调用我的API时,我想将一些数据从API传递给工作。
在我的控制器内部:
val parameters = JobParametersBuilder()
parameters.addString("somename", "somevalue")
可用以下方法:
如何将对象传递给工作?在工作中,我想执行一些MongoDB调用等等
我需要序列化数据并将其作为字符串传递吗?还是有更好的方法将对象从我的控制器传递给作业
答案 0 :(得分:0)
不,这不可能。
我认为拥有原始参数既好又简单。因为这样您可以调解存在参数对象版本控制问题的风险,这将导致反序列化问题。假设您将对象作为参数,然后在下一个版本中对其进行更新。然后,您当前的应用程序将不再能够重新启动旧的失败作业。
还请注意参数“ identifying”的第三个布尔标志。
来自文档:The identifying flag is used to indicate if the parameter is to be used as part of the identification of a job instance.
@Controller
public class JobLauncherController {
@Autowired
JobLauncher jobLauncher;
@Autowired
Job job;
@RequestMapping("/jobLauncher.html")
public void handle() throws Exception{
JobParameters jobParameters = new JobParametersBuilder()
.addString("MyParameter", "value", true)
.toJobParameters();
jobLauncher.run(job, jobParameters);
}
}
您可以在文档中找到更多信息:https://docs.spring.io/spring-batch/4.0.x/reference/html/job.html