面向块的流程

Spring Batch最通用的实现方式是使用“面向块”的处理风格。面向块处理是指在一个事务范围内,一次性读取数据,创建被输出的“块”。ItemReader读取一条项目,通过ItemProcessor处理,并整合。当处理完所有项目后,整个块将由ItemWriter输出,然后提交该事务。

chunk-oriented-processing

下面一段代码展示上面提示的内容:

  1. List items = new Arraylist();
  2. for(int i = 0; i < commitInterval; i++){
  3. Object item = itemReader.read()
  4. Object processedItem = itemProcessor.process(item);
  5. items.add(processedItem);
  6. }
  7. itemWriter.write(items);

配置Step

尽管配置一个Step的的依赖列表比较简短,但它是一个包含许多协作者的极其复杂的类。为了简化Spring Batch配置,如下:

上面配置表示创建一个面向条目step,必要的依赖:

  • reader - ItemReader提供待处理的条目。
  • writer - 由ItemReader提供并被ItemWriter处理的条目。
  • transaction-manager - Spring中的PlatformTransactionManager,将用管理事务的开始和提交。
  • job-repository - JobRepository用于在事务中存储StepExecution和ExecutionContext。在一行,它作为元素的一个属性;对于一个独立的step,定义一个作为它的属性。
  • commit-inerval - 在事务提交之前,将被处理的条目个数。

应当注意的是,job-repository这里默认设置为“jobRepository”,transaction-manager默认设置为“transactionManger”。此外,这里ItemProcessor是可选的,不是必须,因为该条目可能从reader读取并直接传给writer。

继承自一个父Step