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

如何使用Spring DSL统计Exchange报文中子字符串出现次数,不借助Java Bean

Spring DSL 子字符串计数实现方案

不需要自定义Java Bean,有两种开箱即用的实现方式:

方式1:基于SpEL+JDK原生方法实现

通过字符串长度差计算子串出现次数,逻辑为:(原始字符串长度 - 所有目标子串替换为空后的长度) / 目标子串长度,不需要依赖任何额外工具类:

  • Spring XML DSL 示例:
<!-- 统计报文中OK的出现次数,结果存入okCount头字段 -->
<setHeader headerName="okCount">
    <spel>#{body != null ? (body.length() - body.replace('OK', '').length()) / 2 : 0}</spel>
</setHeader>
  • Spring Java DSL 示例:
.setHeader("okCount", spel("body != null ? (body.length() - body.replace('OK', '').length()) / 2 : 0"))

公式中的2对应子串OK的长度,统计其他子串时修改为对应长度即可,空判断逻辑可避免报文为null时的空指针异常。

方式2:基于Camel自带StringHelper工具类实现

你之前用到的countChar仅支持单字符统计,同一个StringHelper类下就有专门统计子串出现次数的countOccurrenceOf方法,可直接调用:

  • Spring XML DSL 示例:
<setHeader headerName="okCount">
    <spel>#{T(org.apache.camel.util.StringHelper).countOccurrenceOf(body, 'OK')}</spel>
</setHeader>
  • Spring Java DSL 示例:
.setHeader("okCount", spel("T(org.apache.camel.util.StringHelper).countOccurrenceOf(body, 'OK')"))

该方式代码更简洁,可读性更高,默认已处理空值边界场景。


内容的提问来源于stack exchange,提问作者DevelopperX

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:42:03