以编程方式运行春季批处理作业?

2022-09-03 09:53:37

我有一个春季批处理应用程序,我从.但现在我必须将此应用程序嵌入到我们的企业环境中。在那里,我们有一个自己的启动器应用程序,我必须使用它。对于这个启动器应用程序,我需要一个带有main方法的启动类,该方法将在启动时调用,并且我必须启动Spring Batch。CommandLineJobRunner

是手动分配并使用此启动器运行作业的唯一方法,还是Spring Batch中有一个类可以支持该操作(或者有人知道一个示例)?JobLauncher


答案 1

如果您不想使用CommandLineRunner(出于某种原因或者如果您需要一些自定义逻辑),请使用Spring Boot应用程序,您可以随时执行以下操作:

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();
}

答案 2

是的,您可以通过编程方式启动作业。如果你在源代码中看到 ,main 方法只需创建一个 Spring 上下文并使用启动器来运行作业。因此,您可以在新应用程序中执行此操作。CommandLineJobRunner


推荐