Parse job parameters from the command line, and then create and write JobParameters.
public JobParameters getJobParameters() { JobParametersBuilder jobParametersBuilder = new JobParametersBuilder(); jobParametersBuilder.addString("dest", <dest_from_cmd_line); jobParametersBuilder.addDate("date", <date_from_cmd_line>); return jobParametersBuilder.toJobParameters(); }
Submit them to your work through JobLauncher -
JobLauncher jobLauncher = context.getBean(JobLauncher.class); JobExecution jobExecution = jobLauncher.run(job, jobParameters);
Now you can access them using the code, for example -
@Bean @StepScope public Resource destFile(@Value("#{jobParameters[dest]}") String dest) { return new FileSystemResource(dest); }
Or in the @Configuration class, which configures Spring batch artifacts of the type - ItemReader, ItemWriter, etc.
@Bean @StepScope public JdbcCursorItemReader<MyPojo> reader(@Value("#{jobParameters}") Map jobParameters) { return new MyReaderHelper.getReader(jobParameters); }
Ashok source share