Java 将春豆注入骆驼DSL

Java 将春豆注入骆驼DSL,java,spring,osgi,apache-camel,Java,Spring,Osgi,Apache Camel,正在尝试将Springbean添加到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

正在尝试将Springbean添加到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
MVEL:exchange.in.body.limit=uiLimit
exchange.in.body.limit=uiLimit;
交换身体;
Spel:request.body.limit=uiLimit
或者甚至先把标题放进去:

<setHeader headerName="limit">
  <simple>ref:uiLimit</simple>
</setHeader>

参考:uiLimit
其中uiLimit为:

<bean id="uiLimit" class="java.math.BigInteger">
  <constructor-arg value="${UI_LIMIT} />
</bean>


转换
仅用于转换消息正文。不要改变标题


如果要更改标头,请使用
setHeader

这种行为的原因是Exchange是在另一个捆绑包中创建的,并且是通过公开的服务进行的:

<osgi:service ref="someHandler" interface="org.apache.camel.Component"/>

Exchange包含来自另一个未声明此bean的捆绑包的注册表/上下文。
所有表达式语言都使用连接到Exchange的注册表/上下文,而不是当前budle的注册表

什么是${UI_LIMIT},它是属性吗?在最后一个代码块中,缺少两个结束引号;-)谢谢你指出这一点。添加了引号${UI_LIMIT}是一个属性(字符串),我已经描述了在注册表中查找Springbean的3种方法。1.通过Simple和setHeader 2。通过Mvel 3。通过Spel,他们中没有人在OSGI环境中工作
<osgi:service ref="someHandler" interface="org.apache.camel.Component"/>