[英]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.