camel simple expression

 

    camel配置时用到simple expression ,摘自camel in action ,作为一个笔记,也给不爱看书的孩纸们一个学习中文的机会得意

 

     simple 用${}或者$simple{}取变量的值,不能嵌套。simple一般用来创建逻辑表达式或者一般表达式

    有一些内置变量${in.body} ,${out .body},${in.header},${exchangeId}

    以及一些内置函数:

    1,${date:header.myDate:yyyy-MM-dd HH:mm:ss}将header里面key为myDate的java.util.Date对象进行转换

    2,${bean:uuidBean?method=generate}将使用Registry里注册的Id为uuidBean的bean的generate方法执行后的返回值

    还有一些file和ftp component的内置变量${file:name},${file:name.ext}

    还有内置操作符== ,>=,<,!=,contains,in,range,regex,is

    操作符的使用方法 ${leftValue} <OP> rightValue

    注意:操作符左边一定是个变量,操作符两侧要有空格,左右两侧的类型可以不一致,因为camel会自动转型

    例子:

    ${in.header.bar} < 200 比较一个String和一个numeric

    ${in.header.bar} range 100..199 比较是否在范围内

     这里有更多例子:http://camel.apache.org/simple.html.

    可以用and和or来连接表达式,勿忘and和or两侧要加空格。

 

     simple支持OGNL的特性,它可以用来连续调用方法微笑,(那个struts啥的也是用OGNL这个东东的哦)比如:

   

      如果body是一个Cusomer类型的,就可以这样调用方法  ${body.getAddress().getZip()}

      可以简写为 ${body.address.zip}

      如果getAddress方法返回一个null,就会报错,所以可以用上?操作符,它叫做"保护null“操作符

      写成:${body?.address.zip}    (不过我觉得还是让他抛exception比较好,不然闷声不响多可怕。敲打

     如果有一个sayHello方法,那么使用${body.sayHello}就可以啦

     OGNL支持对Map和List的快速访问,比如对List  有

     ${body.address?.lines[2]}    ,  ${body.address?.lines[last]}

     getLines返回一个List,取哪个返回List中的第二个元素就加上[2]就可以了,前面的?操作符用来防止

    抛出越界exception   .  last关键字用来访问数组的最后一个值。

    对Map  有

    ${body.type[gold] }     getType方法返回一个Map类型 ,取里面的"gold” key就这样取 [gold]

   可以再看看OGNL的文档

 

    simple expression 也可以用在Process的java 代码里哦!羡慕

    逻辑表达式:

   SimpleBuilder simple = new SimpleBuilder("${body} contains 'Camel'");

   if (simple.matches(exchange) {

   System.out.println("This is a Camel message");

  } else {

  System.out.println("This is NOT a Camel message");

}

    一般表达式:

    SimpleBuilder simple = new SimpleBuilder("Hello ${header.name}");

    String s = simple.evaluate(exchange, String.class);

    System.out.println(s);

   把一个exchange传进去,让simple分析出header里面的name,String.class参数表示evaluate的结果是一个String。

   不过没有了exchange,这个simpleBuilder也没啥用,所以simple就是camel弄出来自己用的。

   O了,再有其他的去官网看文档去吧。大笑 再见

 

   

  

   

 

   

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值