【问题标题】:How to override an imported resource using Spring @Configuration?如何使用 Spring @Configuration 覆盖导入的资源?
【发布时间】:2012-05-19 01:52:42
【问题描述】:

是否可以使用 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 有多个字段,但我只想替换一个。

【问题讨论】:

  • 我真的不知道你在问什么。请详细说明,也许用一些代码。
  • @skaffman 我更新了它。我想用注释配置覆盖 xml spring 配置。 Sudhakar 是否正确?

标签: java spring configuration dependency-injection


【解决方案1】:

您不能使用注解覆盖 Spring xml 配置。

Spring XML 配置总是优先于注解配置

【讨论】:

  • 那太臭了 :( 我想我只需要用我覆盖的 bean 创建一个 xml 文件。
  • Vanilla Java 1-0 Spring
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 2021-08-02
  • 2019-10-31
  • 2013-10-07
  • 1970-01-01
相关资源
最近更新 更多