我正在设置一个实用程序,它允许我们加载基于注释的配置,该配置会覆盖XML配置(用于测试)。我尝试了许多不同的设置,但这是我唯一能够工作的设置:
GenericApplicationContext firstCtx = new GenericApplicationContext();
XmlBeanDefinitionReader xmlReader = new XmlBeanDefinitionReader(firstCtx );
xmlReader.loadBeanDefinitions("applicationContext.xml");
GenericApplicationContext ctx = new GenericApplicationContext();
AnnotatedBeanDefinitionReader annotatedReader = new AnnotatedBeanDefinitionReader(ctx);
annotatedReader.register(SomeConfigClass.class);
ctx.refresh();
for (String currBeanName : firstCtx.getBeanDefinitionNames())
{
if (!ctx.containsBeanDefinition(currBeanName))
{
ctx.registerBeanDefinition(currBeanName, firstCtx.getBeanDefinition(currBeanName));
}
}
虽然这在技术上可以工作,但这似乎是一种非常麻烦的方法。有没有更好的方法在基于XML的配置上加载基于注释的配置?
谢谢!
答案 0 :(得分:0)
我认为更简单的方法是在应用程序上下文中将SomeConfigClass
简单地声明为bean,并且将连接SomeConfigClass中的已配置bean。
<bean class="..SomeConfigClass"/>
或<context:component-scan base-package="package of SomeConfigClass"/>
或者相反,在SomeClassClass中,执行@ImportResource("applicationContext.xml")