为什么我不能在 class 中放置超过 1 个相同参数类型的 setter,它在 dsl 中实现了 genericHandler?

Why i can't put more than 1 setters of same argument type in class which implements genericHandler in dsl?

我创建了一个 class 实现 GenericHandler 以在 .handle() 方法中使用。我有 class 的 setter,但如果我有超过 1 个具有相同参数类型的 setter,我会得到 "Found Ambiguous parameter type"。

为什么会有这样的限制?

那是因为ServiceActivatingHandler是根据后台的MessagingMethodInvokerHelper逻辑来决定合适的messaging方法。而二传手是为此目的的候选人。 所以,如果你真的让其中的几个具有相同的参数类型,我们最终会遇到歧义问题。

为了解决您的问题,我建议将您的 Object handle(P payload, Map<String, Object> headers); 实施标记为 @ServiceActivator

从另一方面来说,我同意它并没有我们对Framework 的期望那么好。因此,请随时就此事提出 JIRA 问题,我们将修复 .handle() 使其更加严格,并且仅依赖于 GenericHandler 实现中的 handle() 方法。