Зависимость Spring bean от одного экземпляра объекта - PullRequest
0 голосов
/ 27 мая 2018

У меня есть 3 bean-компонента, настроенных в XML следующим образом.

<bean id="classA" class="com.petehallw.test.MyClassA">
    <constructor-arg name="threadPoolFactory" ref="threadPoolFactory"/>
    <constructor-arg name="classB" ref="classB"/>
</bean>

<bean id="classB" class="com.petehallw.test.MyClassB"/>

<bean id="threadPoolFactory" class="come.petehallw.test.MyThreadPoolFactory"/>

Вы можете видеть, что две зависимости вставляются в MyClassA - classB и threadPoolFactory.

В MyClassA есть вызов MyClassA.threadPoolFactory.getThreadPool(), который возвращает новый объект типа ThreadPoolExecutor, назначенный переменной-члену MyClassA.

Мой вопрос: как я могу дать MyClassB ссылка на тот же экземпляр ThreadPoolExecutor, если новый метод возвращается из этого метода?Это то, что я могу сделать с помощью конфигурации бина, или я вынужден добавить метод установки к MyClassB?Я спрашиваю, потому что MyClassB всегда должен иметь ненулевое ThreadPoolExecutor (того же экземпляра, на который ссылается MyClassA), поэтому на самом деле его следует передавать через конструктор.

1 Ответ

0 голосов
/ 27 мая 2018

Поскольку область действия по умолчанию для компонента - одноэлементная.Вы можете использовать либо метод установки, либо конструктор для ссылки на пул потоков в ClassB.Следовательно в вашем случае должно быть достаточно следующего конфига.

<bean id="classB" class="com.petehallw.test.MyClassB">
    <constructor-arg name="threadPoolFactory" ref="threadPoolFactory"/>
</beans>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...