我正在使用Camel 2.13.1我想将一个类作为参数传递给我在bean中的一个方法
我可以做点什么吗
In Route
--
.beanRef("someSpringBeanRef","someMethod(${body},com.test.TestObject)")
--
And in Bean
public Object someMethod(String testBody, Class type){
我知道我可以在标题中发送限定类名,并在bean中使用它,但感觉不太对。还有其他选择吗?
我看到了这个链接,但它对我不起作用 Apache Camel - Spring DSL - Pass String argument to bean method
答案 0 :(得分:1)
您可以尝试使用通配符“*”。 Camel会尝试将参数转换为正确的类型。
路线:
public class Routes extends RouteBuilder {
public void configure() throws Exception {
from("direct:in").bean(new TestBean(), "test(*, ${body})");
}
}
豆:
public class TestBean {
public void test(Class<?> clazz, String str) {
System.out.println(clazz);
}
}
骆驼情境:
public static void main(String[] args) throws Exception {
CamelContext ctx = new DefaultCamelContext();
ctx.addRoutes(new Routes());
ctx.start();
ctx.createProducerTemplate().sendBody("direct:in", String.class);
ctx.createProducerTemplate().sendBody("direct:in", "java.lang.String");
}
输出:
class java.lang.String
class java.lang.String
答案 1 :(得分:0)
不支持类型为Class
的方法参数。来自Camel documentation:
Camel使用以下规则来确定它是否是方法选项
中的参数值