Java 将春豆注入骆驼DSL
正在尝试将Springbean添加到Camel body属性。 比如: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
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"/>