2011-05-10 80 views
13

我有一個Spring Batch應用程序,我從CommandLineJobRunner開始。但是現在我必須將這個應用程序嵌入到我們的企業環境中。我們有一個我必須使用的自己的啓動器應用程序。對於這個啓動器應用程序,我需要一個啓動類,其中包含一個將在啓動時調用的主方法,並且我將不得不啓動Spring Batch。以編程方式運行Spring批處理作業?

手動分配JobLauncher並使用此啓動程序運行作業的唯一方法還是Spring支持中有一個支持該類的類(或者有人知道樣例)?

回答

11

是的,你可以通過程序啓動你的工作。如果您看到CommandLineJobRunnerin the source,則主要方法只是創建一個Spring上下文並使用啓動器來運行該作業。所以你可以在你的新應用程序中做到這一點。

6

使用彈簧引導應用程序,如果你不想使用CommandLineRunner(用於:JobLauncher可以在你的servlet /控制器如果你正在尋找一種方式來從web應用程序觸發的作業,自動裝配某些原因或如果您需要一些自定義邏輯),您可以隨時做類似以下操作:

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

我嘗試了這種方法,但不知何故上下文無法找到「你的工作在這裏」的bean,儘管事實上我可以看到bean被Spring容器初始化:(任何想法爲什麼? – Vishal 2017-12-08 15:29:01

相關問題