使用spring表达式语言访问Apache camel头文件

时间:2015-02-26 08:37:16

标签: spring apache-camel spring-el

我想在解析spring表达式时访问camel exchange头值。

1

有可能吗?我正在寻找下面的东西。

ExpressionParser parser = new SpelExpressionParser();
Expression exp = parser.parseExpression("request.headers['myHeader'].concat('!')");
    String message = (String) exp.getValue();
    System.out.println(message);

或者我们可以使用@Header并访问相同的内容吗? 除了将StandardEvaluationContext的值作为变量添加然后解析它之外,还有其他方法吗?

同样感谢一些快速帮助。

2

还有一个问题是,我是否可以在一个地方注册我的所有自定义功能?我的意思是我想避免为每次调用注册函数来评估表达式。目前我正在以下方式进行。

public static String evalExpr(String expr,
        Map<String, Object> variables) throws NoSuchMethodException,
        SecurityException {

    StandardEvaluationContext context = new StandardEvaluationContext();
    context.registerFunction("concat", CusExprs.class
            .getDeclaredMethod("concat", String[].class));
    context.registerFunction("substr", CustExprs.class
            .getDeclaredMethod("substr", new Class[] { String.class,
                    Integer.class, Integer.class }));
    context.setVariables(variables);
    return parser.parseExpression(expr).getValue(context, String.class);
}                 

0 个答案:

没有答案