У нас есть приложение с белым обозначением (одно приложение, поддерживающее фирменный опыт для нескольких клиентов). Мы хотели бы иметь возможность загружать совместную версию компонента для поддержки пользовательских компонентов для каждого клиента. Например что-то вроде:Как «белая этикетка» весенние бобы
<!-- default service -->
<bean id="service" class="com.blah.myService" primary="true">
<property name="myBean" ref="bean" />
</bean>
<!-- custom service for client 123 -->
<bean id="service_123" class="com.blah.myService">
<property name="myBean" ref="bean" />
</bean>
<!-- default bean -->
<bean id="bean" class="com.blah.Bean" primary="true"/>
<!-- bean for client 123 -->
<bean id="bean_123" class="com.blah.Bean" />
Мы попытались подклассов ApplicationContext, и это работает для компонента верхнего уровня, но autowired сотрудники подключаются и кэшируются во время загрузки весной.
В качестве примера, если я вызываю getBean («service»), я могу перехватить вызов в своем пользовательском ApplicationContext и вернуть service_123, но свойство «bean» использует кешированную версию и не вызывает метод getBean еще раз, поэтому я не могу подключиться к пользовательской версии.
Есть ли простой способ достичь этого типа пользовательской инъекции времени выполнения?
Конфигурация боба для каждого приложения или все вместе? –
Они находятся под одним приложением –