I have a Spring Batch application, which I start with the CommandLineJobRunner
. But now I have to embed this application into our corporate environment. There we ha
Using a Spring Boot Application if you don't want to use the CommandLineRunner (for some reason or if you need some custom logic), you can always do something like :
public static void main(String[] args) {
SpringApplication app = new SpringApplication(YourApplication.class);
app.setWebEnvironment(false);
ConfigurableApplicationContext ctx = app.run(args);
JobLauncher jobLauncher = ctx.getBean(JobLauncher.class);
Job job = ctx.getBean("your-job-here", Job.class);
JobParameters jobParameters = new JobParametersBuilder().toJobParameters();
JobExecution jobExecution = jobLauncher.run(job, jobParameters);
BatchStatus batchStatus = jobExecution.getStatus();
}
Yes, you can launch your job programmatically. If you see in the source of CommandLineJobRunner
, the main method just create a Spring context and use the launcher to run the job. So you can do this in your new application.
JobLauncher can be used to invoke the Job programatically. JobLauncher can be autowired in your Servlet/Controller if you're looking for a way to trigger jobs from a webapp:
http://docs.spring.io/spring-batch/reference/htmlsingle/#runningJobsFromWebContainer