Определение того же 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 выиграет игру.