Определение того же Spring bean дважды с тем же именем
Имеет два определения для bean (с тем же именем и классом), допустимым в Spring IOC?
У меня есть два файла определения bean, включенных в web.xml. См. Образец ниже.
ApplicationContext-beans1.xml
<bean name="myWao"
class="com.beans.myBean">
</bean>
ApplicationContext-beans2.xml
<bean name="myWao"
class="com.beans.myBean">
</bean>
Я до сих пор не сталкивался с какой-либо проблемой. Но может ли это повлиять на реальную среду, которая будет многопоточной и сгруппирована?
Примечание. Оба XML файла загружаются, поскольку я могу использовать другой beans определенный (только один раз) в обоих XML
Ответы
Ответ 1
Это действительно так, но вы обнаружите, что один bean переопределяется другим. Вы увидите это в журналах как
Overriding bean definition for...
Это позволяет вам переопределить ранее предоставленные определения bean. Это влияет на статическую сборку вашего приложения и не относится к потоковой/кластеризации, как было предложено в вашем вопросе.
Обратите внимание, что DefaultListableBeanFactory
позволяет настроить это поведение с помощью setAllowBeanDefinitionOverriding()
Ответ 2
Это актуально и полезно, особенно если вы пытаетесь изменить реализацию стороннего bean (я имею в виду, где вам не разрешено изменять реализацию bean) и где вам нужно предоставить/настроить некоторые дополнительные (слияния) свойства для bean.
Переопределение bean зависит от порядка xmls, который вы предоставляете, для создания ApplicationContext
через web.xml или автономного. Последнее определение bean выиграет игру.