我正在使用Apache Camel 2.16.1。我有一个带有重载方法的A类:
doThing(String, String, String)
doThing(String, String, int)
我在Spring DSL中有一些骆驼代码:
<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>
答案 0 :(得分:1)
如注释中所述,这适用于较新的Camel版本,因为BeanInfo class已得到改进,可以通过使用参数类型来选择最佳方法。
有了Camel 2.17,它已经可以工作了
但是,对于旧版本,我认为这是不可能的,因为Bean Binding docs说
Camel当前仅支持在方法名称选项中指定参数绑定或每个参数的类型。您不能同时指定两者