在Spring批处理作业启动器中看到的接口对象?怎么样?

时间:2017-09-27 15:02:36

标签: java spring spring-batch

public interface JobLauncher { public JobExecution run(Job job, JobParameters jp) throws JobExecutionAlreadyRunningException, JobRestartException, JobInstanceAlreadyCompleteException, JobParametersInvalidException; }

这是Spring框架JobLauncher i / f的一部分 方法运行必须由实现类实现。

" job"在运行中(作业作业,JobParameters jp)表示接口Job的对象?但是使用Java的逻辑,你无法创建任何接口的对象..

请使用Job interface ...

解释一个例子

1 个答案:

答案 0 :(得分:0)

  

" job"在运行中(作业作业,JobParameters jp)代表一个对象   界面工作?但是使用Java的逻辑,你无法创建任何对象   接口..

你是对的,你不能实例化一个接口。参数为Job的原因是您可以将implements接口Job的任何对象传递给该方法。您可以创建多个Job对象,每个对象执行不同的操作,并使用一个 JobLauncher启动它们。

您可以使用JobBuilderFactory创建可包含许多步骤的作业。 这方面的一个很好的例子可以在这里找到:https://spring.io/guides/gs/batch-processing/

@Bean
public Job importUserJob(JobCompletionNotificationListener listener) {
        return jobBuilderFactory.get("importUserJob")
                .incrementer(new RunIdIncrementer())
                .listener(listener)
                .flow(step1())
                .end()
                .build();
}

使用上面的内容将在Spring中创建一个FlowJob对象,它将与JobLauncher的run方法兼容,因为它实现了Job