У меня есть несколько XML-файлов конфигурации spring, которые используются для создания одного глобального контекста, например:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean class="org.springframework.context.support.ClassPathXmlApplicationContext" id="global.context">
<constructor-arg index="0">
<list>
<value>classpath:config/common/main-springconfig.xml</value>
<value>classpath:config/me/main-springconfig.xml</value>
</list>
</constructor-arg>
</bean>
</beans>
Я создаю контекст следующим образом:
private static final String springContext = "global.context";
private static final String beanRefContext = "classpath*:global-config.xml";
private ConfigurableApplicationContext springApplicationContext;
ClassPathXmlServiceLocator()
{
BeanFactoryLocator beanFactoryLocator = ContextSingletonBeanFactoryLocator.getInstance(beanRefContext);
springApplicationContext = (ConfigurableApplicationContext) beanFactoryLocator.
useBeanFactory(springContext).getFactory();
}
Проблема в том, что каждая конфигурация имеет определение bean-компонента с одним и тем же типом: some.package.BeanType, но когда контекст полностью создан, доступен только один bean-компонент этого типа.
В javadoc ClassPathXmlApplicationContext есть примечание:
В случае нескольких местоположений конфигурации более поздние определения bean-компонентов будут переопределять определения, определенные в ранее загруженных файлах. Это можно использовать для намеренного переопределения определенных определений bean-компонентов с помощью дополнительного XML-файла.
Но означает ли это, что даже bean-компоненты с разными идентификаторами, определенными в отдельных файлах конфигурации, будут переопределены? Как я могу решить эту проблему?
@Named
не для этого,@Qualifier
есть. - person M. Deinum   schedule 28.10.2014@Named
для создания компонента@Qualifier
(есть 2, кстати!) чтобы отметить конкретный экземпляр. - person M. Deinum   schedule 28.10.2014