如何读取头值以在服务激活器中动态解析方法

时间:2015-07-20 13:00:05

标签: spring spring-integration

我浏览了一个春季博客,解释了使用groovy动态路由。

我在之前的服务激活器中设置了method标头值

    <int:service-activator input-channel="routingChannel"
        output-channel="headerRouter" ref="routingHelper"  method="headers['method']">
   </int:service-activator>

我试过了

  1. headers.get('method') - &gt;没有合适的方法来处理消息错误。
  2. expression="@beanFactory.getBean('routingHelper').routeMe()也无效
  3. 请帮我在config xml中获取标题值。

1 个答案:

答案 0 :(得分:1)

它不会那样工作。

您只能在method参数中使用bean definition phase个表达式。这一个(headers['method')运行时类型,可以从那些带有expression字的属性中使用。但无论如何它都没有帮助:SpEL没有method-invocation-by-name符号。

从另一方面需要了解你的逻辑。如果最终得到反射,按方法名称路由的原因是什么?

为什么不使用单一方法并且if...else在内部?或者路由到不同的bean。

即使使用Groovy动态方法调用,我们也会得到反射:

routingHelper.'headers[method]'(payload)