我需要在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>
答案 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
)