15

我开始研究 Spring 文档。我遇到了parent属性解释,使用parent在两个bean之间使用属性是否等同于这些类之间的继承关系?

如果是这样,如何执行方法覆盖?我还看到在某些情况下,parent在 XML 配置文件中使用属性和extends在 bean 类中使用关键字。是否需要指定两个弹簧才能实现继承?

4

2 回答 2

26
  • 在 spring 中,parentin bean 配置表示configuration inheritance与 Java 继承无关。
  • configuration inheritance您消除重复的 XML 代码时,它可以节省大量代码。

例如,您有以下具有属性的 bean

Class MyBean {
    attrib1
    attrib2
    attrib3
    attrib4
} 

说一个 bean 实例说bean1只是需要attrib1attrib2而另一个说bean2实例需要所有四个属性。

让我们配置这两个 bean

<bean id="bean1" class="MyBean">
    <property name="attrib1" value="val1" />
    <property name="attrib2" value="val2" />
</bean>

<bean id="bean2" parent="bean1">
    <property name="attrib3" value="val3" />
    <property name="attrib4" value="val4" />
</bean>

请注意,bean2只需要配置attrib3attrib4. 其他两个属性继承bean1

要回答您的问题:

是否需要指定两个弹簧才能实现继承?

不,如前所述,这与 java 继承不同。

于 2013-10-07T11:52:35.807 回答
5

不...它们彼此没有关系。

父 bean 定义可以被认为是其他 bean 的模板形式(它们不必有任何关系)。想象一下,您有 3 个 bean,它们都共享/需要用户名/密码/url 配置,然后您可以创建一个定义所有这些属性的父 bean。这减少了您的配置工作(您不必在所有 bean 定义中复制属性)。

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-child-bean-definitions给出了一个很好的概述。

于 2013-10-07T11:48:00.560 回答