带有覆盖的Spring混合XML /注释配置

时间:2012-07-25 21:05:50

标签: spring

我正在设置一个实用程序,它允许我们加载基于注释的配置,该配置会覆盖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的配置上加载基于注释的配置?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为更简单的方法是在应用程序上下文中将SomeConfigClass简单地声明为bean,并且将连接SomeConfigClass中的已配置bean。

<bean class="..SomeConfigClass"/>

<context:component-scan base-package="package of SomeConfigClass"/>

或者相反,在SomeClassClass中,执行@ImportResource("applicationContext.xml")