You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Integration中如何用SpEL为消息头列表添加元素生成新列表?

在Spring Integration中通过header-enricher扩展消息头列表

要实现向消息头中已有的列表添加新元素并生成扁平的新列表,你可以通过SpEL调用Java集合类的方法来完成,避免出现嵌套列表的问题。

解决方案1:双括号初始化(简洁直观)

直接复制原有列表并添加新元素:

<si:header-enricher default-overwrite="true">
    <si:header name="myList" expression="new java.util.ArrayList<>(headers.myList) {{ add('z'); }}"/>
</si:header-enricher>

解决方案2:Stream API合并(适合Java 8+)

利用Stream流合并原有列表和新元素,再收集为新列表:

<si:header-enricher default-overwrite="true">
    <si:header name="myList" expression="T(java.util.stream.Stream).concat(headers.myList.stream(), T(java.util.stream.Stream).of('z')).collect(T(java.util.stream.Collectors).toList())"/>
</si:header-enricher>

完整配置示例

<!-- 初始化消息头列表 -->
<si:header-enricher>
    <si:header name="myList" expression="{ 'x', 'y' }"/>
</si:header-enricher>

<!-- 扩展列表并覆盖原有头 -->
<si:header-enricher default-overwrite="true">
    <si:header name="myList" expression="new java.util.ArrayList<>(headers.myList) {{ add('z'); }}"/>
</si:header-enricher>

执行后,myList的值将变为['x', 'y', 'z'],而非你之前遇到的嵌套列表格式。

内容的提问来源于stack exchange,提问作者al.truisme

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 23:15:44