【问题标题】:Camel/Spring not recognizing correct overloaded methodCamel/Spring 无法识别正确的重载方法
【发布时间】:2018-10-23 08:17:35
【问题描述】:

我正在使用 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>

【问题讨论】:

  • 我在最新的 Camel 2.22.0 中尝试了与 Java DSL 类似的东西,它可以工作。你能更新你的 Camel 依赖项吗?

标签: java apache-camel spring-camel


【解决方案1】:

正如 cmets 中所述,这适用于较新的 Camel 版本,因为 BeanInfo class 已得到改进,可以通过使用参数类型来选择最佳方法。

Camel 2.17 已经可以使用了

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

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

【讨论】:

  • 啊,好吧,那我得看看更新了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 2015-01-06
  • 2013-07-06
相关资源
最近更新 更多