面向块的流程
Spring Batch最通用的实现方式是使用“面向块”的处理风格。面向块处理是指在一个事务范围内,一次性读取数据,创建被输出的“块”。ItemReader读取一条项目,通过ItemProcessor处理,并整合。当处理完所有项目后,整个块将由ItemWriter输出,然后提交该事务。
下面一段代码展示上面提示的内容:
List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
Object item = itemReader.read()
Object processedItem = itemProcessor.process(item);
items.add(processedItem);
}
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。