0

我正在开发一个骆驼应用程序,我想在其中将 bean 的范围保持在路由级别。这意味着,如果我从两个不同的路由调用一个 bean,则应该创建两个实例。但是在该路由中,应该为该 bean 使用相同的单个实例。以下是我的代码:

<bean id="testbean" class="testClass">  </bean>
<camelContext id="test"
        xmlns="http://camel.apache.org/schema/blueprint">
    <route id="1">
        <from uri="timer"/>
        <to uri="bean:test"/>
    </route>
    <route id="2">
       <from uri="timer"/>
       <to uri="bean:test"/>  
    </route>
</camelContext>

这里应该在路线 2 中创建单独的 bean 实例。如果有任何想法,请提出建议。

4

1 回答 1

4

Apache Camel 等不支持路由范围的 bean。您可以共享单例 bean 或原型 bean(每次调用新实例)。这些是来自 Spring XML 或 Blueprint XML 的范围。

要使用原型范围,您需要:

  • 在 Spring/Blueprint XML 中将 bean 声明为原型
  • 在 Camel 的端点中设置cache=false选项bean:xxx

你也可以考虑吃两个豆子,例如

<bean id="testbean" class="testClass">  </bean>
<bean id="testbean2" class="testClass">  </bean>

然后testbean在第一条路线和testbean2第二条路线中使用。

于 2018-04-18T05:47:45.577 回答