【发布时间】:2018-04-22 12:51:38
【问题描述】:
对不起,这对某些人来说可能是个菜鸟问题,但我突然想到了,我认为值得修正我的想法并从一些专家那里得到相关的解释。
我刚开始 Spring Batch 教程,我对如何启动这些应用程序感到困惑。让我们在官方网站上举这个例子
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
这里是配置类
@Configuration
@EnableBatchProcessing
public class BatchConfiguration {
@Autowired
public JobBuilderFactory jobBuilderFactory;
@Autowired
public StepBuilderFactory stepBuilderFactory;
@Autowired
public DataSource dataSource;
// tag::jobstep[]
@Bean
public Job importUserJob(JobCompletionNotificationListener listener) {
return jobBuilderFactory.get("importUserJob")
.incrementer(new RunIdIncrementer())
.listener(listener)
.flow(step1())
.end()
.build();
}
@Bean
public Step step1() {
return stepBuilderFactory.get("step1")
.<Person, Person> chunk(10)
.reader(reader())
.processor(processor())
.writer(writer())
.build();
}
// end::jobstep[]
}
这里提到main()方法使用Spring Boot的SpringApplication.run()方法来启动应用程序。
我不清楚importUserJob 的工作是如何执行的,而
没有找到显示我们如何开始这项工作的明确代码,它只是一个配置部分(声明)。
另一方面,我发现了另一个启动 Spring 应用程序的示例,如下所示:
public static void main(String[] args) {
GenericApplicationContext context = new AnnotationConfigApplicationContext(MyBatchConfiguration.class);
JobLauncher jobLauncher = (JobLauncher) context.getBean("jobLauncher");
Job job = (Job) context.getBean("myJobName");//this is bean name of your job
JobExecution execution = jobLauncher.run(job, jobParameters);
}
这里我可以理解,作业是用jobLauncher执行的。
【问题讨论】: