在将SI从v2.2升级到v3.0.5之后,下面的网关出现了错误。V3.x中网关接口的行为是否更改为不接受消息类型??对于为什么会发生这种情况,任何暗示都将不胜感激。
org.springframework.expression.spel.SpelEvaluationException: EL1004E:(pos 8):方法调用:在com.sun.agent上找不到方法sendStat(my.domain.ReplyStatEvent)。$Proxy22类型]
void sendStat(@Payload Message<? extends LiveStatEvent> message);ReplyStatEvent扩展LiveStatEvent并使用服务激活器定义调用网关,如下所示:
<int:service-activator ref="liveStatsGateway" method="sendStat" />在将接口更改为以下内容之后,它工作得很好。
void sendStat(@Payload LiveStatEvent message);发布于 2014-10-23 07:41:26
即使它以前工作过,也不意味着它的语法是正确的。
如果您的网关的param标记为@Payload,则假定该框架将向该arg注入Message的一个payload,而不是整个Message。
我们只是修正了这个模棱两可的地方,然后告诉你用例是不正确的。
因此,如果您只想使用payload,就可以为param指定特定的有效负载类型。这种情况下,@Payload是不必要的。这是必需的,如果您的方法有几个args,而Framewrok无法确定哪个是有效负载。
如果你想和整个Message打交道,那就足够有这样的arg了。
总之,组合@Payload Message<?>是不正确的。因此,您只需要修复那些迁移指南案例。
https://stackoverflow.com/questions/26522338
复制相似问题