我有多个spring config xml文件,用于创建一个全局上下文,如下所示:
<?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的defenition:some.package.BeanType,但是当完全实例化上下文时,只有一个该类型的bean可用。
ClassPathXmlApplicationContext中有一个注释:javadoc:
如果有多个配置位置,以后的bean定义将覆盖先前加载的文件中定义的bean定义。这可以用来通过额外的XML文件故意覆盖某些bean定义。
但这是否意味着即使在不同的配置文件中定义的具有不同ID的bean也会被覆盖?我怎样才能克服这个问题?
答案 0 :(得分:0)
最后,我找到了问题的根本原因。 Spring一直在正常工作。问题出在第三方类(所谓的:some.package.BeanType)。