96.5. 在制作者中使用表达式参数
在 Camel 2.16.1 起,您也可使用简单表达式,这允许在消息正文中使用类似符号的 OGNL,其中假定 获得License
和 getMinimum
方法:
@NAME(projects) SELECT * FROM projects WHERE license = :${body.license} AND id > :${body.minimum} ORDER BY id
96.5.1. 在消费者中使用表达式参数
可作为 Camel 2.23 使用
当将 ElSql 组件用作消费者时,您现在还可以使用表达式参数(简单语言)构建动态查询参数,如在 bean 上调用一个方法以检索 id、date 或 something。
例如,以下示例中调用 bean myIdGenerator 上的 nextId 方法:
@NAME(projectsByIdBean) SELECT * FROM projects WHERE id = :${bean#myIdGenerator.nextId}
重要
请注意,在上面的 bean 语法中,我们必须在简单表达式中使用 #
而不是 :
。这是因为 Spring query 参数 parser 用来分隔冒号中的参数。另请注意,Spring 查询解析器将为每个查询调用 bean 两次。
和 bean 有以下方法:
public static class MyIdGenerator { private int id = 1; public int nextId() { // spring will call this twice, one for initializing query and 2nd for actual value id++; return id / 2; }
请注意,没有消息正文和标头的现有 Exchange
,因此消费者中使用的简单表达式最可用于调用 bean 方法,如本例中所示。