Run Spring Batch Job programmatically?

前端 未结 3 1942
礼貌的吻别
礼貌的吻别 2021-02-02 15:50

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

相关标签:
3条回答
  • 2021-02-02 16:00

    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();
    }
    
    0 讨论(0)
  • 2021-02-02 16:06

    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.

    0 讨论(0)
  • 2021-02-02 16:07

    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

    0 讨论(0)
提交回复
热议问题