Spring integration 从SI v 2.2升级到v 3.0.5后网关接口中断

Spring integration 从SI v 2.2升级到v 3.0.5后网关接口中断,spring-integration,spelevaluationexception,Spring Integration,Spelevaluationexception,在将SI从v2.2升级到v3.0.5之后,我得到了以下网关的一个错误。V3.x中网关接口的行为是否已更改为不接受消息类型??如果您能提供任何有关为什么会发生这种情况的提示,我们将不胜感激 org.springframework.expression.spel.SpelEvaluationException:EL1004E:(位置8):方法调用:在com.sun.proxy上找不到方法sendStat(my.domain.ReplyStatEvent)。$Proxy22 type] void se

在将SI从v2.2升级到v3.0.5之后,我得到了以下网关的一个错误。V3.x中网关接口的行为是否已更改为不接受消息类型??如果您能提供任何有关为什么会发生这种情况的提示,我们将不胜感激

org.springframework.expression.spel.SpelEvaluationException:EL1004E:(位置8):方法调用:在com.sun.proxy上找不到方法sendStat(my.domain.ReplyStatEvent)。$Proxy22 type]

void sendStat(@Payload Message<? extends LiveStatEvent> message);

即使它以前工作过,也不意味着它的语法是正确的

如果网关的参数标记为
@Payload
,则假定框架将向该arg注入
消息
有效载荷
,而不是整个
消息

我们刚刚修复了这种模糊性,现在向您展示了您的用例是不正确的

因此,如果您想使用just
有效载荷
,就可以为param指定just有效载荷类型。 在这种情况下,
@Payload
不是必需的。如果您的方法有多个参数,而Framewrok无法确定有效负载的参数,则必须使用该参数

如果您想处理整个
消息
,那么只需要一个该类型的arg即可


无论如何,组合
@Payload Message
不正确。因此,您只需修复这些情况。

谢谢Artem。你这么说似乎有点明显。我不知道为什么它被标注为@Payload。
<int:service-activator ref="liveStatsGateway" method="sendStat" />
void sendStat(@Payload LiveStatEvent message);