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

Spring Integration:recipient-list-router的selector-expression枚举匹配求助

Spring Integration Recipient List Router 表达式匹配问题解决

问题根源

你不需要把枚举ActivityStatus注册为Bean,枚举本身是静态类型,直接通过全限定类名在SpEL中引用即可。之前的配置错误在于误用了Bean引用语法,还存在语法拼写错误。

正确配置写法

在selector-expression中使用SpEL的T()语法引用枚举类,直接访问枚举常量并调用方法:

假设ActivityStatus的全限定类名为com.yourpackage.enums.ActivityStatus,正确配置如下:

<int:recipient-list-router input-channel="yourInputChannel">
    <int:recipient selector-expression="T(com.yourpackage.enums.ActivityStatus).START.getStatus().equals(payload.getStatus())" channel="abc"/>
</int:recipient-list-router>

简化写法

如果payload.getStatus()返回的字符串和枚举START的getStatus()结果完全一致,也可以用==直接比较:

<int:recipient selector-expression="T(com.yourpackage.enums.ActivityStatus).START.getStatus() == payload.getStatus()" channel="abc"/>

关键说明

  • SpEL中通过T(全限定类名)访问Java静态类型(包括枚举),无需额外注册Bean
  • 务必替换成你项目中ActivityStatus实际的全限定类名,否则会抛出类型找不到的异常
  • 若payload中的status字段是枚举类型而非字符串,可直接比较枚举实例:T(com.yourpackage.enums.ActivityStatus).START == payload.getStatus()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 18:30:02