Из соображений эффективности я заинтересован в ограничении количества потоков, которые одновременно используют компоненты контекста приложения Spring (я не хочу, чтобы неограниченное количество потоков, обрабатываемых в моем ограниченном память).
Я нашел здесь (весенняя документация) способ добиться этого путем объединения компонентов в стиле EJB, выполнив следующее:
- Объявите целевой бин как область действия "prototype".
- Объявите провайдера пула, который будет поставлять ограниченное количество объединенных "целевых" экземпляров.
- Объявите «ProxyFactoryBean», функция которого мне не понятна.
Вот объявление этого боба:
<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>
Моя проблема заключается в том, что, когда я объявлю другой компонент для использования объединенных экземпляров "businessObjectTarget", как мне это сделать? Я имею в виду, когда я пытаюсь сделать что-то вроде этого:
<bean id="clientBean" class="com.mycompany.ClientOfTheBusinessObject">
<property name="businessObject" ref="WHAT TO PUT HERE???"/>
</bean>
Каким должно быть значение "ref" ??