Camel/Spring 无法识别正确的重载方法
Camel/Spring not recognizing correct overloaded method
我正在使用 Apache Camel 2.16.1。我有一个带有重载方法的 class 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>
如评论中所述,这适用于较新的 Camel 版本,因为 BeanInfo class 已改进为使用参数类型选择最佳方法。
Camel 2.17 已经可以使用了
但是,对于旧版本,我认为这是不可能的,因为 Bean Binding docs 说
Camel currently only supports either specifying parameter binding or type per parameter in the method name option. You cannot specify both at the same time
我正在使用 Apache Camel 2.16.1。我有一个带有重载方法的 class 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>
如评论中所述,这适用于较新的 Camel 版本,因为 BeanInfo class 已改进为使用参数类型选择最佳方法。
Camel 2.17 已经可以使用了
但是,对于旧版本,我认为这是不可能的,因为 Bean Binding docs 说
Camel currently only supports either specifying parameter binding or type per parameter in the method name option. You cannot specify both at the same time