具有相同别名的Spring Bean条目-一个孩子另一个父类

时间:2018-08-13 15:32:50

标签: spring dependency-injection javabeans

我需要在SPRING bean中使用相同的别名覆盖默认的服务类,以便使用相同的Alias调用新的服务类。我在Spring xml中添加了以下代码,此处“ CustomDefaultService扩展了DefaultService”

1)在创建实例并通过相同的别名进行引用时,Spring是否优先考虑子类?

2)还是Spring(如果我们将子代或父代分配给相同的别名)呢?

             

<alias alias="modelService" name="customMefaultService" />
    <bean id="customMefaultService" class="com.tisl.CustomDefaultService" parent="defaultModelService">
</bean>

1 个答案:

答案 0 :(得分:0)

实际使用哪个bean取决于上下文加载顺序。 Spring将使用最后创建的bean 。因此,如果您可以确保在customMefaultService之后创建DefaultService

为确保顺序,您可以使用depends-on。例如:

<alias alias="modelService" name="customMefaultService" />
    <bean id="customMefaultService" class="com.tisl.CustomDefaultService" parent="defaultModelService" depends-on="defaultModelService">
</bean>

由于您已经在使用parent,所以我认为顺序已经正确了。

还要确保将setAllowBeanDefinitionOverriding设置为true(默认为true