我浏览了一个春季博客,解释了使用groovy动态路由。
我在之前的服务激活器中设置了method
标头值
<int:service-activator input-channel="routingChannel"
output-channel="headerRouter" ref="routingHelper" method="headers['method']">
</int:service-activator>
我试过了
expression="@beanFactory.getBean('routingHelper').routeMe()
也无效请帮我在config xml中获取标题值。
答案 0 :(得分:1)
它不会那样工作。
您只能在method
参数中使用bean definition phase
个表达式。这一个(headers['method'
)运行时类型,可以从那些带有expression
字的属性中使用。但无论如何它都没有帮助:SpEL没有method-invocation-by-name
符号。
从另一方面需要了解你的逻辑。如果最终得到反射,按方法名称路由的原因是什么?
为什么不使用单一方法并且if...else
在内部?或者路由到不同的bean。
即使使用Groovy动态方法调用,我们也会得到反射:
routingHelper.'headers[method]'(payload)