У меня есть случай, когда у меня есть бин (назовем его A), которому нужен какой-то другой бин (B).
Этот B извлекается из статического метода класса с использованием MethodInvokingFactoryBean.Этот статический метод зависит от состояния системы и будет работать после загрузки веб-приложения.
Мне нужен доступ к B только во время выполнения (нет взаимодействия в конструкторе).Как я могу настроить A для автоматической передачи bean-компонента B и инициализировать его только в первый раз, когда этого требует A?
Является ли использование getBean в контексте приложения единственным способом?
Спасибо!
* Редактировать - Добавлено несколько xmls :) *
Это определение компонента B.
<bean id="api" class="com.foo.API"/>
<bean id="B" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean" lazy-init="true">
<property name="targetObject" ref="api"/>
<property name="targetMethod" value="getFactory"/>
<qualifier value="myQualifer"/>
</bean>
Это определение компонента A.
<bean id="resources.someRESTResourceA" class="com.foo.MyRestResource"/>
Я не могу использовать Autowire для подключения B к A, потому что он инициализирует его (B) при построении A.
targetMethod B будет работать только после Интернетаприложение было инициализировано.Я могу использовать ApplicationContext.getBean ("B") внутри A, но это не элегантно и будет проблемой с модульным тестированием, если я не сделаю следующее (что также нежелательно):
public BInterface getB() {
if (b == null) {
b = ApplicationContext.getBean("B");
}
return b;
}