Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式运行Spring批处理作业?_Java_Spring Batch - Fatal编程技术网

Java 以编程方式运行Spring批处理作业?

Java 以编程方式运行Spring批处理作业?,java,spring-batch,Java,Spring Batch,我有一个Spring批处理应用程序,从CommandLineJobRunner开始。但现在我必须将这个应用程序嵌入到我们的公司环境中。我们有一个自己的启动器应用程序,我必须使用它。对于这个启动程序应用程序,我需要一个带有main方法的启动类,该方法将在启动时被调用,并且我必须在其中启动springbatch 是手动分配JobLauncher并使用此启动器运行作业的唯一方法,或者Spring Batch中是否有支持该方法的类(或者有人知道示例)?是的,您可以通过编程方式启动作业。如果您看到的是Co

我有一个Spring批处理应用程序,从
CommandLineJobRunner
开始。但现在我必须将这个应用程序嵌入到我们的公司环境中。我们有一个自己的启动器应用程序,我必须使用它。对于这个启动程序应用程序,我需要一个带有main方法的启动类,该方法将在启动时被调用,并且我必须在其中启动springbatch


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

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

可以使用JobLauncher以编程方式调用作业。如果您正在寻找从webapp触发作业的方法,JobLauncher可以自动连接到Servlet/控制器中:


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

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容器初始化的:(.知道为什么吗?它对我很有效。我进行了更改以停止作业的默认执行。在application.properties中添加了一行:-Spring.batch.job.enabled=false