如何在Camel XML DSL中调用带参数的Bean方法?
在Camel XML DSL中调用带参数的Bean方法
针对你调用java.util.Properties的put方法的需求,以下是两种正确的XML DSL写法,同时会指出你之前尝试的写法问题:
正确写法示例
方式一:使用<bean>标签嵌套<argument>
这是最常用的写法,参数顺序要严格对应方法定义的key、value顺序:
<bean ref="properties" method="put"> <argument value="someKey" type="java.lang.String"/> <argument value="someValue" type="java.lang.String"/> </bean>
如果参数类型能被Camel自动推断(比如字符串常量),type属性可以省略;但如果存在方法重载,建议显式指定type避免匹配错误。
方式二:使用<method>标签配合<argument>
和<bean>标签的逻辑一致,只是标签不同:
<method ref="properties" method="put"> <argument value="someKey"/> <argument value="someValue"/> </method>
从Exchange动态获取参数
如果参数值需要从Exchange的Header、Body或其他地方获取,可以用simple表达式:
<bean ref="properties" method="put"> <argument simple="${header.myKey}"/> <argument simple="${body}"/> </bean>
你之前写法的问题说明
- 直接在
<method>标签上使用argument/arugment属性是错误的:XML DSL中必须通过<argument>子元素传递参数,而非标签属性 method="put?keyEl&valEl"是Java DSL的语法,不适用于XML DSL- 重复使用
value属性会被覆盖,XML标签不允许重复同名属性
内容的提问来源于stack exchange,提问作者Maciej Kajetan Chrzanowski
相关产品推荐
相关产品推荐

