Основная проблема, с которой я столкнулся, состоит в том, что у меня есть один файл xml, который используется в качестве файла утилиты и импортируется в другие файлы xml. Он определяет серию объектов для подключения к платформе и предоставляет для нее интерфейс. Бобы в этом файле определены как lazy-initialized, так что если вы не хотите подключаться к платформе, вы не будете, но если вы начнете ссылаться на соответствующий компонент, тогда все должно встать и работать.Объявление оспариваемой зависимости объекта весной
Основная проблема, с которой я сталкиваюсь, состоит в том, что один из компонентов этого набора не является экспликацией, на которую ссылается какой-либо другой, но она должна быть сконструирована так, как она будет вызывать метод на одном из других компонентов, чтобы " активировать "его. (Он действует как хранитель ворот путем включения/выключения подключения на основе того, что он определяет как состояние платформы).
Вот манекен рода настройки XML у меня есть:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.5.xsd"
default-lazy-init="true">
<!-- Provides the connection to the platform -->
<bean id="PlatformConnection">
<constructor-arg ref="PlatformConnectionProperties" />
</bean>
<!-- This bean would be overriden in file importing this XML -->
<bean id="PlatformConnectionProperties"/>
<!-- Controls the databus to be on/off by listening to status on the Platform
(disconnections/reconnections etc...) -->
<bean lazy-init="false" class="PlatformStatusNotifier">
<constructor-arg ref="PlatformConnection" />
<constructor-arg ref="PlatformConnectionDataBus" />
</bean>
<!-- A non platform specific databus for client code to drop objects into -
this is the thing that client XML would reference in order to send objects out -->
<bean id="PlatformConnectionDataBus" class="DataBus"/>
<!-- Connects the DataBus to the Platform using the specific adaptor to manage the java object conversion -->
<bean lazy-init="false" class="DataBusConnector">
<constructor-arg>
<bean class="PlatformSpecificDataBusObjectSender">
<constructor-arg ref="PlatformConnection" />
</bean>
</constructor-arg>
<constructor-arg ref="PlatformConnectionDataBus" />
</bean>
</beans>
Сейчас в основном я хочу, чтобы удалить ленивый inits здесь, которые необходимы, чтобы получить эту вещь, чтобы работать должным образом. Объектами, на которые ссылается клиентский XML, являются PlatformConnection
и PlatformConnectionDataBus
. Как я могу объяснить, что я хочу, чтобы эти другие бобы были построены, если на них ссылаются?