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。下面的例子是通过 JobBuilderFactoryStepBuilderFactory 配置的两个step job 。

  1. @Configuration
  2. @EnableBatchProcessing
  3. @Import(DataSourceCnfiguration.class)
  4. public class AppConfig {
  5. @Autowired
  6. private JobBuilderFactory jobs;
  7. @Autowired
  8. private StepBuilderFactory steps;
  9. @Bean
  10. public Job job() {
  11. return jobs.get("myJob").start(step1()).next(step2()).build();
  12. }
  13. @Bean
  14. protected Step step1(ItemReader<Person> reader, ItemProcessor<Person, Person> processor, ItemWriter<Person> writer) {
  15. return steps.get("step1")
  16. .<Person, Person> chunk(10)
  17. .reader(reader)
  18. .processor(processor)
  19. .writer(writer)
  20. .build();
  21. }
  22. @Bean
  23. protected Step step2(Tasklet tasklet) {
  24. return steps.get("step2")
  25. .tasklet(tasklet)
  26. .build();
  27. }
  28. }