Vererbung der Spring Bean-Konfiguration
In Spring wird die Vererbung in der Bean-Konfiguration für ein Bean unterstützt, um gemeinsame Werte, Eigenschaften oder Konfigurationen zu verwenden.
Eine untergeordnete Bean oder geerbte Bean kann ihre übergeordneten Bean-Konfigurationen, Eigenschaften und einige Attribute erben. Darüber hinaus können die untergeordneten Beans den geerbten Wert überschreiben.
Das folgende vollständige Beispiel zeigt, wie die Vererbung der Bean-Konfiguration in Spring funktioniert.
package com.example.common; public class Customer { private int type; private String action; private String Country; //... }
Bean Konfigurationsdatei
Oben ist eine BaseCustomerMalaysia-Bean aufgeführt, die einen Malaysia-Wert für die Ländereigenschaft enthält, und die CustomerBean-Bean hat diesen Wert von ihrem übergeordneten Element (BaseCustomerMalaysia) geerbt.
Starte es
package com.example.common; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class App { public static void main( String[] args ) { ApplicationContext context = new ClassPathXmlApplicationContext("SpringBeans.xml"); Customer cust = (Customer)context.getBean("CustomerBean"); System.out.println(cust); } }
Ausgabe
Customer [type=1, action=buy, Country=Malaysia]
Das Bean "CustomerBean" hat gerade die Ländereigenschaft von seinem übergeordneten Element ("BaseCustomerMalaysia") geerbt.
Vererbung mit Zusammenfassung
Im obigen Beispiel kann BaseCustomerMalaysia weiterhin beispielsweise Folgendes instanziieren:
Customer cust = (Customer)context.getBean("BaseCustomerMalaysia");
Wenn Sie diese Basis-Bean als Vorlage erstellen und anderen nicht erlauben möchten, sie zu instanziieren, können Sie dem
Nun ist die Bean "BaseCustomerMalaysia" eine reine Vorlage, die Bean nur erben kann. Wenn Sie versuchen, sie zu instanziieren, wird die folgende Fehlermeldung angezeigt.
Customer cust = (Customer)context.getBean("BaseCustomerMalaysia");
org.springframework.beans.factory.BeanIsAbstractException: Error creating bean with name 'BaseCustomerMalaysia': Bean definition is abstract
Reine Vererbungsvorlage
Tatsächlich ist die übergeordnete Bean nicht erforderlich, um das Klassenattribut zu definieren. In vielen Fällen benötigen Sie möglicherweise nur eine gemeinsame Eigenschaft für die Freigabe. Hier ist ein Beispiel
In diesem Fall ist die Bean "BaseCustomerMalaysia" eine reine Vorlage, um nur die Eigenschaft "country" gemeinsam zu nutzen.
Überschreibe es
Sie können den geerbten Wert jedoch weiterhin überschreiben, indem Sie den neuen Wert in der untergeordneten Bean angeben. Sehen wir uns dieses Beispiel an
Die Bean "CustomerBean" überschreibt lediglich die Ländereigenschaft des übergeordneten Elements ("BaseCustomerMalaysia") von "Malaysia" bis "Japan".
Customer [Country=Japan, action=buy, type=1]
Fazit
Die Vererbung der Spring-Bean-Konfiguration ist sehr nützlich, um den wiederholten gemeinsamen Wert oder die wiederholten Konfigurationen für mehrere Beans zu vermeiden.
Quellcode herunterladen
Laden Sie es herunter -Spring-Bean-Inheritance-Example.zip (5 KB)