尝试将Spring bean添加到Camel body属性中。 类似的东西:
MVEL: exchange.in.body.limit = uiLimit
<transform>
<mvel>
exchange.in.body.limit = uiLimit;
exchange.in.body;
</mvel>
</transform>
Spel: request.body.limit = uiLimit
甚至首先放入标题:
<setHeader headerName="limit">
<simple>ref:uiLimit</simple>
</setHeader>
uiLimit在哪里:
<bean id="uiLimit" class="java.math.BigInteger">
<constructor-arg value="${UI_LIMIT} />
</bean>
仍然在标题和属性中变为null。
为什么注册表中的bean查找对OSGI不起作用? (单束内的所有豆/路线)
PS:这在Route中工作正常:
<bean ref="uiLimit" method="toString"/>
答案 0 :(得分:1)
transform
仅用于转换邮件正文。不要改变标题。
如果您想更改标题,请使用setHeader
答案 1 :(得分:0)
此类行为的原因是Exchange在另一个捆绑包中创建并通过公开的服务来创建:
<osgi:service ref="someHandler" interface="org.apache.camel.Component"/>
Exchange包含来自另一个未声明此bean的bundle的Registry / Context。 所有表达式语言都使用附加到Exchange的Registry / Context,而不是使用当前发布的注册表