繁体   English   中英

Spring:覆盖父bean

[英]Spring: override parent bean

是否可以覆盖/替换父抽象bean?

EG:第1个xml:

<bean id="inheritedTestBean" abstract="true" class="org.springframework.beans.TestBean">
</bean>

<bean id="inheritsWithDifferentClass" class="org.springframework.beans.DerivedTestBean" parent="inheritedTestBean">
</bean>

第二个xml

<bean id="inheritedTestBean2" abstract="true" class="org.springframework.beans.TestBean2">
</bean>
<alias name="inheritedTestBean2" alias="inheritedTestBean" />

TestBean2继承TestBean。

任何给定的Spring上下文对于任何给定的id或名称只能有一个bean。 对于XML id属性,这由架构验证强制执行。 在name属性的情况下,这是由Spring的逻辑强制执行的。

但是,如果上下文是由两个不同的XML描述符文件构造的,并且两个文件都使用了一个id,那么将会“覆盖”另一个文件。 确切的行为取决于文件在上下文加载时的顺序。

所以虽然有可能,但不建议这样做。 它容易出错并且很脆弱,如果你更改一个而不是另一个的ID,你将无法获得Spring的帮助。

即使你能做到这一点,也会非常困惑。 @Primary注释,你可以看一下。 或者您可以查看spring配置文件,因此您有一个默认的bean实现,然后每个其他配置文件都有一个不同的抽象类实现。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM