将数据从控制器传递到作业

时间:2018-10-18 17:45:09

标签: java spring spring-batch

当有人调用我的API时,我想将一些数据从API传递给工作。

在我的控制器内部:

val parameters = JobParametersBuilder()
parameters.addString("somename", "somevalue")

可用以下方法:

methods

如何将对象传递给工作?在工作中,我想执行一些MongoDB调用等等

我需要序列化数据并将其作为字符串传递吗?还是有更好的方法将对象从我的控制器传递给作业

1 个答案:

答案 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