【发布时间】:2011-06-27 13:29:50
【问题描述】:
出于效率原因,我有兴趣限制同时使用 Spring 应用程序上下文的 bean 的线程数(我不希望 无限 在我的 中处理线程数有限的内存)。
我发现here(spring 文档)通过以下方式以 EJB 样式汇集 bean 来实现此目的:
- 将目标 bean 声明为范围“原型”。
- 声明将提供有限数量的池化“目标”实例的池提供程序。
- 声明一个“ProxyFactoryBean”,我不清楚它的功能。
这是这个 bean 的声明:
<bean id="businessObjectTarget" class="com.mycompany.MyBusinessObject"
scope="prototype">
... properties omitted
</bean>
<bean id="poolTargetSource" class="org.springframework.aop.target.CommonsPoolTargetSource">
<property name="targetBeanName" value="businessObjectTarget"/>
<property name="maxSize" value="25"/>
</bean>
<bean id="businessObject" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="targetSource" ref="poolTargetSource"/>
<property name="interceptorNames" value="myInterceptor"/>
</bean>
我的问题是,当我将声明另一个 bean 使用“businessObjectTarget”的池化实例时,我应该怎么做?我的意思是,当我尝试做这样的事情时:
<bean id="clientBean" class="com.mycompany.ClientOfTheBusinessObject">
<property name="businessObject" ref="WHAT TO PUT HERE???"/>
</bean>
“ref”的值应该是多少??
【问题讨论】:
-
如果您的意思是“businessObjectTarget”,那么我不会使用任何池,而是使用“MyBusinessObject”的单个实例。如果您的意思是“businessObject”,则没有任何使用该名称声明的 bean。
-
? -
@abalogh 对不起,我不明白,你的 cmets 不是很冗长。您建议声明“ProxyFactoryBean”类型的 bean businessObject?这已经在代码中完成了。
标签: java multithreading spring ejb