2013-10-07 4 views
10

Ich fing an, Spring-Dokumentation zu studieren. Ich stieß auf parent Attribut Erklärung, funktioniert mit parent Attribut zwischen zwei Beans entspricht Vererbungsbeziehung zwischen diesen Klassen?Ist das Elternattribut des Bean-Tags äquivalent zur Vererbung in Java?

Wenn ja, wie wird die Methode überschrieben? Auch sah ich in einem Zusammenhang, Verwendung von parent Attribut in XML-Konfigurationsdatei und extends Schlüsselwort in Bean-Klasse. Ist es erforderlich, beide Federn zu spezifizieren, um die Vererbung zu implementieren?

+4

http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/htmlsingle/#bean-child-bean-definitionen erklärt alles. –

Antwort

19
  • Im Frühjahr bedeutet die parent in Bohnen Konfiguration configuration inheritance und nicht auf Java Vererbung verwendet.
  • Die configuration inheritance speichert eine Menge Code, da Sie auf wiederholten XML-Code verzichten.

Beispiel: Sie haben folgende Bohne mit Attributen

Class MyBean { 
    attrib1 
    attrib2 
    attrib3 
    attrib4 
} 

Say eine Instanz der Bohne sagen bean1 braucht nur attrib1 und attrib2 während andere sagen bean2 Instanz alle vier Attribute benötigt.

Lässt diese beiden Bohnen konfigurieren

<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> 

Beachten Sie, dass bean2 nur attrib3 und attrib4 konfigurieren benötigt. Die beiden anderen Attribute werden geerbt von bean1

Um Ihre Frage zu beantworten:

Ist es erforderlich, beide Federn, um zu spezifizieren Erbe zu implementieren?

Nein. Wie bereits erwähnt, ist dies nicht dasselbe wie Java-Vererbung.

+0

Vielen Dank für die Antwort Santosh.Aber jetzt bemerkte ich einen Punkt von der folgenden Link von Deinum erwähnt, dass "eine Kind-Bean-Definition Konstruktorargumentwerte, Eigenschaftswerte und Methodenüberschreibungen von der übergeordneten, mit der Option, neue Werte hinzufügen" erbt. Also, die Verwendung von Elternattributen unterstützt das Überschreiben von Methoden? –

+0

Wie ich bereits erwähnt habe, gibt es keine Verbindung zwischen dem Attribut 'parent' in der Spring-Konfiguration und der Java-Vererbung und somit dem Überschreiben der Methode.Die konfigurierte Bean hat die gesamte Methode (einschließlich geerbt, außer Kraft gesetzt) ​​unabhängig davon, ob für diese Bean das Elternattribut definiert ist oder nicht. – Santosh

5

Nein ... Sie sind nicht miteinander verwandt.

Eine übergeordnete Bean-Definition kann als eine Art Vorlage für andere Beans angesehen werden (die keine Beziehung haben müssen). Stellen Sie sich vor, Sie haben 3 Beans, die alle eine username/password/url-Konfiguration teilen/benötigen. Sie können dann eine Eltern-Bean erstellen, die all diese Eigenschaften definiert. Dies reduziert den Konfigurationsaufwand (Sie müssen die Eigenschaften nicht in allen Bean-Definitionen duplizieren).

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-child-bean-definitions gibt einen schönen Überblick.

Verwandte Themen