4.2 Java Config
在Spring 3版本中可以采用java程序来配置应用程序,来替代XML配置的方式。 正如在Spring Batch 2.2.0版本中,批处理任务中可以使用相同的java配置项来对其进行配置。关于Java的基础配置的两个组成部分分别是: @EnableBatchConfiguration
注释和两个builder。
在Spring的体系中 @EnableBatchProcessing
注释的工作原理与其它的带有 @Enable *
的注释类似。在这种情况下,@EnableBatchProcessing
提供了构建批处理任务的基本配置。在这个基本的配置中,除了创建了一个 StepScope 的实例,还可以将一系列可用的bean进行自动装配:
- JobRepository bean 名称 “jobRepository”
- JobLauncher bean名称”jobLauncher”
- JobRegistry bean名称”jobRegistry”
- PlatformTransactionManager bean名称 “transactionManager”
- JobBuilderFactory bean名称”jobBuilders”
- StepBuilderFactory bean名称”stepBuilders”
这种配置的核心接口是 BatchConfigurer。它为以上所述的bean提供了默认的实现方式,并要求在context中提供一个bean,即 DataSource 。数据库连接池由被 JobRepository 使用。
注意
只有一个配置类需要有@ enablebatchprocessing注释。只要有一个类添加了这个注释,则以上所有的bean都是可以使用的。
在基本配置中,用户可以使用所提供的builder factory来配置一个job。下面的例子是通过 JobBuilderFactory 和 StepBuilderFactory 配置的两个step job 。
@Configuration
@EnableBatchProcessing
@Import(DataSourceCnfiguration.class)
public class AppConfig {
@Autowired
private JobBuilderFactory jobs;
@Autowired
private StepBuilderFactory steps;
@Bean
public Job job() {
return jobs.get("myJob").start(step1()).next(step2()).build();
}
@Bean
protected Step step1(ItemReader<Person> reader, ItemProcessor<Person, Person> processor, ItemWriter<Person> writer) {
return steps.get("step1")
.<Person, Person> chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
@Bean
protected Step step2(Tasklet tasklet) {
return steps.get("step2")
.tasklet(tasklet)
.build();
}
}