Apache camel ApacheCamel POJO Bean处理器是单例还是原型?
我使用Camel的springdsl来构建路由,并使用pojobean作为处理器 起初,我认为:Apache camel ApacheCamel POJO Bean处理器是单例还是原型?,apache-camel,Apache Camel,我使用Camel的springdsl来构建路由,并使用pojobean作为处理器 起初,我认为: <bean ref="myPojoBeanProcessor"/> 我想知道,如果采用后一种方法,bean对象是否会随每个请求一起实例化,或者bean实例是否会被缓存并用作单例(如spring中的默认值) 我无法在camel文档或谷歌上找到答案。有人知道这个问题的答案吗?你为什么不试试呢:) Camel将使用默认的无参数构造函数一次性创建一个实例,并缓存该实例,例如它的单例作用域。以下
<bean ref="myPojoBeanProcessor"/>
我想知道,如果采用后一种方法,bean对象是否会随每个请求一起实例化,或者bean实例是否会被缓存并用作单例(如spring中的默认值)
我无法在camel文档或谷歌上找到答案。有人知道这个问题的答案吗?你为什么不试试呢:)
Camel将使用默认的无参数构造函数一次性创建一个实例,并缓存该实例,例如它的单例作用域。以下是MethodCallExpression#createExpression(CamelContext)中的相关代码片段:
Camel正在缓存它在字段中创建的实例。我就是这么想的。只是需要确认我的结论。(见下面我的答案)谢谢@Claus!
<bean beanType="com.mycompany.transformation.MyPojoBeanProcessor"/>
from("xxx").bean(MyPojoBeanProcessor.class).xxx
if (this.beanType != null)
{
Expression answer;
if (ObjectHelper.hasDefaultPublicNoArgConstructor(this.beanType)) {
this.instance = camelContext.getInjector().newInstance(this.beanType);
answer = new BeanExpression(this.instance, getMethod());
} else {
answer = new BeanExpression(this.beanType, getMethod());
}
}