Vererbung der Spring Bean-Konfiguration

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 -Element ein Attribut 'abstract' hinzufügen. Beispielsweise



    
        
    

    
        
        
    

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)