2011-05-10 98 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

相关问题