Apache camel 如何使用JavaDSL在ApacheCamel中使用参数调用方法
如何使用JavaDSL在Camel路由中调用方法?如果我对方法使用了错误的签名,我想在Eclipse中得到一个编译时错误Apache camel 如何使用JavaDSL在ApacheCamel中使用参数调用方法,apache-camel,Apache Camel,如何使用JavaDSL在Camel路由中调用方法?如果我对方法使用了错误的签名,我想在Eclipse中得到一个编译时错误 .bean(Foo.class, "setDetails("1", "Camel")") 这里我不会因为错误的方法签名而得到编译时错误,因为方法是在字符串中定义的。据我所知,这是不可能的,因为Camel通过反射API调用该方法 您可以做的是使用方法名在Foo.class中创建常量,然后在bean调用中使用常量,而不是硬编码的方法名字符串 但即使这样,您当然也可以在bean中
.bean(Foo.class, "setDetails("1", "Camel")")
这里我不会因为错误的方法签名而得到编译时错误,因为方法是在字符串中定义的。据我所知,这是不可能的,因为Camel通过反射API调用该方法 您可以做的是使用方法名在
Foo.class
中创建常量,然后在bean调用中使用常量,而不是硬编码的方法名字符串
但即使这样,您当然也可以在bean中重命名方法,而无需修改常量。功能会被破坏,但编译器仍然会很高兴
如果bean专用于驼峰路线并且在您的控制下,那么您所能做的最好的事情就是重构bean
- 删除方法参数,在消息交换上设置它们,并将它们注入
,@Header
@Property
- 将bean拆分为非常小的bean,只使用一个方法来除去方法名
- 据我所知,这是不可能的,因为Camel通过反射API调用该方法
您可以做的是使用方法名在
Foo.class
中创建常量,然后在bean调用中使用常量,而不是硬编码的方法名字符串
但即使这样,您当然也可以在bean中重命名方法,而无需修改常量。功能会被破坏,但编译器仍然会很高兴
如果bean专用于驼峰路线并且在您的控制下,那么您所能做的最好的事情就是重构bean
- 删除方法参数,在消息交换上设置它们,并将它们注入
,@Header
@Property
- 将bean拆分为非常小的bean,只使用一个方法来除去方法名
.bean(Foo.class, "setDetails(1, 'Camel')")
- 如果第一个参数的类型为int,只需输入不带引号的数字即可
- 第二个参数是String,所以应该将String放在单引号中
.bean(Foo.class, "setDetails(1, 'Camel')")
- 如果第一个参数的类型为int,只需输入不带引号的数字即可
- 第二个参数是String,所以应该将String放在单引号中
.bean(Foo.class, "setDetails(1, 'camel')")
或
根据,从camel 2.9开始,您可以在方法调用(使用您的示例)中传入一个整数和一个字符串作为参数,如下所示:
.bean(Foo.class, "setDetails(1, 'camel')")
或
谢谢你的回复。但是我不相信
不可能的说法,因为Camel通过反射API调用该方法。这是一个基本特性,我将尝试将其提交给Camel团队。感谢您的回复。但是我不相信不可能的说法,因为Camel通过反射API调用该方法。这是一个基本特性,我将尝试将其提升到Camel团队。