面向塊的處理
Spring Batch 在其最常見的實現中使用了“面向塊(chunk-oriented)”的處理方式。面向塊的處理是指一次讀取一條資料,並建立在事務邊界內寫入的“塊(chunk)”。一旦讀取的專案數量達到提交間隔,整個塊將由 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);
您還可以為面向塊的 Step 配置一個可選的 ItemProcessor
,用於在將專案傳遞給 ItemWriter
之前對其進行處理。下圖展示了在 Step 中註冊 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);
有關 Item Processor 及其用例的更多詳細資訊,請參閱專案處理部分。