首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Splitter在中处理集合的项时直接返回集合?

为什么Splitter在中处理集合的项时直接返回集合?
EN

Stack Overflow用户
提问于 2019-08-12 08:44:01
回答 1查看 171关注 0票数 0

当我读到"Spring in Action 5“一书,读到第9章”集成Spring“时,特别是在"Splitters”一节中,这本书显示,在将集合分离成每个被发送到另一个通道处理的项目时,您可以直接用Splitter方法返回集合。我一遍又一遍地阅读了它,但仍然无法得到它,为什么不先分离集合,然后将每一项返回到另一个通道?谁能帮助我更清楚地理解它吗?非常感谢。

这本书首先说:

但是,如果您想进一步分解它,而不是处理一个LineItems列表,而是分别处理每个LineItem呢?要将行项列表拆分为多个消息,只需编写一个使用@Splitter注释的方法(而不是bean),并返回LineItems.的集合。

书中的代码如下:

代码语言:javascript
复制
@Splitter(inputChannel="lineItemsChannel",outputChannel="lineItemChannel")
public List<LineItem> lineItemSplitter(List<LineItem> lineItems) {
    return lineItems;
}

这本书解释了这个代码:

当带有有效列表负载的消息到达名为lineItemsChannel的通道时,它将传递给lineItemSplitter()方法。根据拆分器的规则,必须返回要拆分的项的集合。在本例中,您已经有了一个LineItems集合,因此您只需直接返回集合。因此,集合中的每个LineItem都以自己的消息发布到名为lineItemChannel的通道。(来自9.2.5Splitters)

但是我认为"lineItemSplitter“拆分器方法应该将每一项逐一返回给outputChannel "lineItemChannel”进行处理(而且我无法想象如何在表达式中编写这段代码,希望您理解我的想法)。

EN

回答 1

Stack Overflow用户

发布于 2019-08-12 13:09:16

实际的分割(发送到输出通道)是由框架完成的。拆分器代码返回集合,框架以离散消息的形式发出每个拆分。

在以后的版本中(因为这本书已经写好了),您现在也可以返回一个IteratorIterable。例如,这在FileSplitter中很有用,因为它避免将整个文件加载到内存中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57458050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档