bean标记的parent属性是否等同于Java中的继承?

Bha*_*r R 13 java spring

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

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

San*_*osh 22

  • 在spring中,parentin bean配置表示configuration inheritance与Java继承无关.
  • configuration inheritance重复使用XML代码时,可以节省大量代码.

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

Class MyBean {
    attrib1
    attrib2
    attrib3
    attrib4
} 
Run Code Online (Sandbox Code Playgroud)

假设bean的一个实例说bean1需要attrib1,attrib2而另一个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>
Run Code Online (Sandbox Code Playgroud)

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

回答你的问题:

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

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


M. *_*num 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给出了一个很好的概述.