是否可以使用Spring注释配置覆盖导入的资源?
配置类:
@Configuration
@ImportResource({"classpath:applicationContext.xml"})
public class CoreConfiguration {
@Resource(name = "classA")
private ClassA classA;
@Bean(name = "nameIWantToOverride")
private ClassB classB() {
return new ClassB("different setting");
}
}
applicationContext.xml包含:
<bean name="classA" class="a.b.c.ClassA">
<property name="nameIWantToOverride" ref="classB" />
</bean>
如果classA有一个classB字段,但我希望它使用我在配置类中定义的ClassB,那可能吗?我试过切换订单,但没有帮助。似乎XML优先,因为当我运行实例化配置的简单测试时,它永远不会到达classB方法。如果我更改名称使其与xml文件中的bean不匹配,那么它确实会到达classB方法。
我已经看到它可以用另一种方式工作:Can spring framework override Annotation-based configuration with XML-based configuration?但是这个方向呢?由于这是更新的做事方式,我认为你能做到这一点。
我该怎么做才能解决这个问题?
编辑:使用XML更新。假设classA有多个字段,但我只想替换它。
答案 0 :(得分:5)
您无法使用注释覆盖spring xml配置。
Spring XML配置始终优先于注释配置