如何使用Spring @Configuration覆盖导入的资源?

AHu*_*ist 5 java configuration spring dependency-injection

是否可以使用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");
    }

}
Run Code Online (Sandbox Code Playgroud)

applicationContext.xml包括:

<bean name="classA" class="a.b.c.ClassA">
     <property name="nameIWantToOverride" ref="classB" />
</bean>
Run Code Online (Sandbox Code Playgroud)

如果classA有一个classB字段,但我希望它使用我在配置类中定义的ClassB,那可能吗?我试过切换订单,但没有帮助.似乎XML优先,因为当我运行实例化配置的简单测试时,它永远不会到达classB方法.如果我更改名称使其与xml文件中的bean不匹配,那么它确实到达了classB方法.

我已经看到了它可以以另一种方式工作的地方:Spring框架可以覆盖基于XML的配置的基于注释的配置吗?但是这个方向怎么样?由于这是更新的做事方式,我认为你能做到这一点.

我该怎么做才能解决这个问题?

编辑:使用XML更新.假设classA有多个字段,但我只想替换它.

Sud*_*kar 5

您不能使用注释覆盖spring xml配置.

Spring XML配置始终优先于注释配置

  • 那很臭:(我想我只需要用我的覆盖bean创建一个xml文件. (2认同)