我有以下路线:
<route id="myRoute">
<from uri="direct:myRoute"/>
<to uri="bean:beanA?method=processLocal"/>
<to uri="bean:beanB?method=methodB"/>
<to uri="bean:beanC?method=methodC"/>
<to uri="bean:beanA?method=processGlobal"/>
</route>
其中beanA,beanB和beanC是具有原型范围的Spring组件。
beanA中的方法processLocal
为类实例字段设置一个值,然后我需要在方法processGlobal
中使用它。但是因为我的bean的范围是原型,null
中的字段值为processGlobal
。据我所知,这是因为<to uri="bean:..."/>
使用camel ApplicationContextRegistry
类通过应用程序上下文获取bean,导致新bean(因为原型)。所以,问题是:是否可能为路由初始化bean一次,然后在各种<to uri.../>
语句中使用它?或许这种方法是错误的,我应该考虑一些完全不同的方法?感谢。