使用空列表作为输入调用Itemwriter

时间:2018-01-09 21:46:46

标签: java spring spring-batch

引用一个从未收到答案的论坛中的旧问题:

  

我是否故意将一个空List作为ItemWriter.write()方法的输入?在我的情况下,我必须处理这种情况,因为“什么都不写”会导致错误。   我正在使用CompositeItemProcessor,其中第一个ItemProcessor过滤掉项目。最后n个项目被过滤以便最后一个输入列表为空,这可能是一种共识。

     

我希望当输入为空时不会调用write() - 因为无论如何都无法写入。你怎么看?我要为此创建一张票吗?

http://forum.spring.io/forum/spring-projects/batch/723820-itemwriter-write-gets-called-with-empty-list-as-input

我处于完全相同的情况。在处理项目期间,可能每个项目都被过滤。在这种情况下,我希望不应该调用write。这是否意味着我需要在编写器实现中防范空列表的情况?

1 个答案:

答案 0 :(得分:0)

据我所知:是的,可以使用空列表调用编写器。

在处理SimpleChunkProcessor中的块时,将为块中的所有输入调用处理器,并将结果添加到输出中,如here所示。如果块中的所有项都在处理器中被跳过(返回null),则transform方法将返回一个带有空项列表的块。此输出是作者应该编写的内容,因此使用空列表(write

调用编写器