java - Apache Camel Java DSL 将类参数传递给 bean 方法

标签 java spring apache-camel enterprise-integration

我正在使用 Camel 2.13.1,我想将一个类作为参数传递给 bean 中的一个方法

我可以做类似的事情吗

In Route
    --
     .beanRef("someSpringBeanRef","someMethod(${body},com.test.TestObject)")
    --

And in Bean
      public Object someMethod(String testBody, Class type){

我知道我可以在 header 中发送合格的类名并在 bean 中使用它,但感觉不太正确。还有其他选择吗?

我看到了这个链接,但它对我不起作用 Apache Camel - Spring DSL - Pass String argument to bean method

最佳答案

您可以尝试使用通配符“*”。 Camel 会尝试将参数转换为正确的类型。

路线:

public class Routes extends RouteBuilder {
     public void configure() throws Exception {
         from("direct:in").bean(new TestBean(), "test(*, ${body})");
     }
}

bean :

public class TestBean {
    public void test(Class<?> clazz, String str) {
        System.out.println(clazz);
    }        
}

Camel 上下文:

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

关于java - Apache Camel Java DSL 将类参数传递给 bean 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26778800/

相关文章:

java - 是否可以使用 GWT 构建像独立小部件(如 slider 或日期选择器等)一样的 jquery?

java - mule-domain-config 中的 org.xml.sax.SAXParseException : Failed to read schema document mule-mongo. xsd

java - Spring Boot 401身份验证错误的日志用户名/密码

java - 如何处理camel项目中蓝图路由异常

java - Camel Http 代理到 Web 服务

java - Android ListView 未填充数据

java - 根据迭代次数将字符串用户输入添加到数组列表中

带有JUnit测试套件错误的SpringJUnit4ClassRunner

java - Camel 异常/错误处理事务路由,不会导致客户端异常

java - 如何加快Java(JDBC)中大量SQL更新的执行速度