我有一個Spring Batch應用程序,我從CommandLineJobRunner
開始。但是現在我必須將這個應用程序嵌入到我們的企業環境中。我們有一個我必須使用的自己的啓動器應用程序。對於這個啓動器應用程序,我需要一個啓動類,其中包含一個將在啓動時調用的主方法,並且我將不得不啓動Spring Batch。以編程方式運行Spring批處理作業?
手動分配JobLauncher
並使用此啓動程序運行作業的唯一方法還是Spring支持中有一個支持該類的類(或者有人知道樣例)?
我有一個Spring Batch應用程序,我從CommandLineJobRunner
開始。但是現在我必須將這個應用程序嵌入到我們的企業環境中。我們有一個我必須使用的自己的啓動器應用程序。對於這個啓動器應用程序,我需要一個啓動類,其中包含一個將在啓動時調用的主方法,並且我將不得不啓動Spring Batch。以編程方式運行Spring批處理作業?
手動分配JobLauncher
並使用此啓動程序運行作業的唯一方法還是Spring支持中有一個支持該類的類(或者有人知道樣例)?
是的,你可以通過程序啓動你的工作。如果您看到CommandLineJobRunner
的in the source,則主要方法只是創建一個Spring上下文並使用啓動器來運行該作業。所以你可以在你的新應用程序中做到這一點。
JobLauncher可用於以編程方式調用作業。
http://docs.spring.io/spring-batch/reference/htmlsingle/#runningJobsFromWebContainer
使用彈簧引導應用程序,如果你不想使用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();
}
我嘗試了這種方法,但不知何故上下文無法找到「你的工作在這裏」的bean,儘管事實上我可以看到bean被Spring容器初始化:(任何想法爲什麼? – Vishal 2017-12-08 15:29:01
鏈接無法正常工作。 – nilsi 2014-12-19 10:56:06