1

我正在使用 Apache Camel 2.16.1。我有一个带有重载方法的 A 类:

doThing(String, String, String)
doThing(String, String, int)

我在 Spring DSL 中有一些 Camel 代码:

<setProperty>
    <method method="doThing(${body}, 'blah', 10)" ref="A"/>
</setProperty>

当它似乎应该非常清楚地解析为第二个“String,String,int”方法时,我不断收到一个模棱两可的方法异常。如果我想要第一个,呼叫将是“doThing('blah', 'blah', '10')”。如何在不重命名方法的情况下解决此问题?我已经尝试过以下方法但没有成功:

<setProperty>
    <method method="doThing(${body}, 'blah', int 10)" ref="A"/>
</setProperty>

<setProperty>
    <method method="doThing(${body}, 'blah', '10')" ref="A"/>
</setProperty>

<setProperty>
    <method method="doThing(${body}, 'blah', String '10')" ref="A"/>
</setProperty>
4

1 回答 1

1

正如评论中所指出的,这在较新的 Camel 版本中有效,因为BeanInfo 类已经过改进,可以通过使用参数类型来选择最佳方法。

使用 Camel 2.17 它已经可以工作了

但是,对于旧版本,我认为这是不可能的,因为Bean Binding 文档

Camel 目前仅支持在方法名称选项中指定参数绑定或每个参数的类型。您不能同时指定两者

于 2018-10-23T14:31:01.667 回答