覆盖没有别名(也是父对象)的spring bean

时间:2018-12-04 05:50:45

标签: java spring spring-boot dependency-injection override

我在 module1-spring.xml -

中有一个bean
<bean id="parent" class="com.Parent"/>

<bean id="service" class="com.Service">
    <property name="parent" ref="parent"/>
</bean>

我想覆盖 module2-spring.xml -

中的bean
<bean id="child" class="com.Child" parent="parent"/>

我希望child而不是parent可以在服务中传递。 如果我将child别名为parent,即

<alias id="child" alias="parent"/>

然后,parent属性将读取子级而不是父Bean,并且在服务器启动时失败,并显示错误-

  

BeanDefinitionStoreException:名称无效的bean定义   在类路径资源[module2-spring.xml]中定义的“子级”:无法   解决父bean定义“父”。

当父级也是子级父级时,重写父级的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

module2 中复制 service bean并注入 child 解决了该问题。
module2-spring.xml-

<bean id="service" class="com.Service">
    <property name="parent" ref="child"/>
</bean>