簡體   English   中英

以編程方式運行Spring Batch Job?

[英]Run Spring Batch Job programmatically?

我有一個Spring Batch應用程序,我從CommandLineJobRunner開始。 但現在我必須將此應用程序嵌入到我們的企業環境中。 我們有一個自己的Launcher應用程序,我必須使用它。 對於這個啟動器應用程序,我需要一個帶有main方法的啟動類,它將在啟動時調用,並且我必須啟動Spring Batch。

是手動分配JobLauncher並使用此啟動器運行Job的唯一方法,還是Spring Batch中有一個類支持(或者有人知道樣本)?

是的,您可以通過編程方式啟動作業。 如果您 CommandLineJobRunner 的源代碼中看到,main方法只是創建一個Spring上下文並使用啟動器來運行該作業。 所以你可以在新的應用程序中執行此操作。

如果您不想使用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();
}

JobLauncher可用於以編程方式調用Job。 如果您正在尋找一種從Web應用程序觸發作業的方法,可以在您的Servlet / Controller中自動裝配JobLauncher:

http://docs.spring.io/spring-batch/reference/htmlsingle/#runningJobsFromWebContainer

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM