2017-09-25 190 views
0

我已经用spring批处理建立了一个java批处理项目,该批处理项目允许将CSV的行保存在数据库的表中。 我想知道是否有可能用Spring API REST通过POST方法触发批处理,这会加入必要的CSV。Spring批处理+ Spring API REST

预先感谢您

回答

1

你可以做到这一点使用ControllerJobLauncherJob。控制器的准系统会是这样

@RestController 
public class MyController{ 
    // Usually given by Spring Batch 
    private JobLauncher jobLauncher; 
    // Your Job 
    private Job job; 
    // Ctor 
    public MyController(JobLauncher jobLauncher, Job job, ...){} 

    @PostMapping("/") 
    public String launchJob(...){ 
     ... 
     // Create JobParameters and launch 
     JobParameters jobparameters = new Job Parameters(); 
     jobLauncher.run(job, jobParameters); 
     ... 
    } 
} 

SimpleJobLauncher,JobLauncher的实施,在默认情况下使用了同步执行,你可能会想这取决于你的要求它改变到一个异步一个

+0

所以我设法从POST启动作业,但如何检索通过该方法发送的CSV? – Fosfor

+0

@Fosfor你可以按照这个[入门指南](https://spring.io/guides/gs/uploading-files/)创建一个上传文件的方法(MultipartFile有'transferTo'和'getBytes',它们允许你保存文件)。之后,您可以将文件的路径作为字符串放入作业参数中 –