2013-08-22 71 views
3

的名單我在春天一批是新的,所以也許我錯了,但我不明白爲什麼在itemWriter寫入方法需要的數據的列表的方法寫:爲什麼春天批次itemWriter有數據

void write(List<? extends T> items) throws Exception; 

如果我沒有理解這個首先處理是讀取項目列表的itemReader。在第一次迭代中讀取第一個項目等等...下一步是itemProcessor,它從itemReader獲取數據。然後有一些處理和itemProcessor返回我們想要保存在某個地方的新類。所以最後一步是itemWriter,它得到這個返回itemProcessor的類。所以我不知道itemWriter何時獲取數據列表。當我調試我的簡單示例項目時,該列表中仍然只有一個項目。請人給我解釋一下它

THX很多

回答

4

答案是在這個sequence diagram from the Spring Batch documentation

enter image description here

如果這還不夠清晰,文檔(!再次)解釋說,Spring使用一個chunck爲主的加工型風格:

Spring Batch的使用中的「組塊導向」的處理風格的大多數 常見的實現。面向塊的處理是指一次讀取一個數據塊 ,並且創建將被寫出的「塊」, 在事務邊界內。

其實Spring批處理文檔相當不錯。如果您從Spring Batch開始,我會推薦閱讀它。

+0

是的我讀過這個文檔,但是當我嘗試我的示例時,這種行爲是不同的。首先是閱讀然後處理,然後寫入等等。未讀取和處理,最後(讀取列表中的所有元素時)寫入 – hudi

+0

取決於配置中的commit-interval的值。對於'commit-interval = 1',爲每個元素調用'ItemWriter'。 – LaurentG

+0

好的thx澄清 – hudi