面向块的处理
Spring Batch 在其最常见的实现中使用“分块式”处理风格。分块式处理是指一次读取一条数据,并创建在事务边界内写入的“块”。当读取的项目数量等于提交间隔时,整个块将由ItemWriter
写入,然后提交事务。下图显示了该过程
图 1. 分块式处理
以下伪代码以简化形式显示了相同的概念
List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
Object item = itemReader.read();
if (item != null) {
items.add(item);
}
}
itemWriter.write(items);
您还可以使用可选的ItemProcessor
配置分块式步骤,以在将项目传递给ItemWriter
之前处理项目。下图显示了在步骤中注册ItemProcessor
时的过程
图 2. 带有 Item Processor 的分块式处理
以下伪代码以简化形式显示了如何在代码中实现这一点
List items = new Arraylist();
for(int i = 0; i < commitInterval; i++){
Object item = itemReader.read();
if (item != null) {
items.add(item);
}
}
List processedItems = new Arraylist();
for(Object item: items){
Object processedItem = itemProcessor.process(item);
if (processedItem != null) {
processedItems.add(processedItem);
}
}
itemWriter.write(processedItems);
有关项目处理器及其用例的更多详细信息,请参阅项目处理部分。