Anleitung zur Spring BeanFactory

Anleitung zur Spring BeanFactory

1. Einführung

Dieser Artikel konzentriert sich aufexploring the Spring BeanFactory API.

Die Schnittstelle vonBeanFactorybietet einen einfachen und dennoch flexiblen Konfigurationsmechanismus zum Verwalten von Objekten jeglicher Art über den Spring IoC-Container. Schauen wir uns einige Grundlagen an, bevor wir uns eingehend mit dieser zentralen Spring-API befassen.

2. Grundlagen - Bohnen und Behälter

Einfach ausgedrückt sind Beans die Java-Objekte, die das Rückgrat einer Spring-Anwendung bilden und vom Spring-IoC-Container verwaltet werden. Abgesehen davon, dass eine Bean vom Container verwaltet wird, hat sie nichts Besonderes (im Übrigen ist sie eines von vielen Objekten in der Anwendung).

Der Spring-Container ist für die Instanziierung, Konfiguration und Assemblierung der Beans verantwortlich. Der Container erhält Informationen darüber, welche Objekte instanziiert, konfiguriert und verwaltet werden sollen, indem die von uns für die Anwendung definierten Konfigurationsmetadaten gelesen werden.

3. Maven-Abhängigkeiten

Fügen wir der Dateipom.xmldie erforderlichen Mavendependencyhinzu. Wir werden Spring Beans-Abhängigkeit verwenden, um die BeanFactory einzurichten:


    org.springframework
    spring-beans
    5.1.4.RELEASE

4. DieBeanFactory-Schnittstelle

Es ist interessant, zunächst einen Blick auf das Paketinterface definition inorg.springframework.beans.factoryzu werfen und hier einige seiner wichtigen APIs zu diskutieren.

4.1. DiegetBean() APIs

Verschiedene Versionen der MethodegetBean()geben eine Instanz der angegebenen Bean zurück, die für die gesamte Anwendung freigegeben oder unabhängig sein kann.

4.2. DiecontainsBean() API

Diese Methode bestätigt, ob diese Bean Factory eine Bean mit dem angegebenen Namen enthält. Insbesondere wird bestätigt, obgetBean(java.lang.String)eine Bean-Instanz mit dem angegebenen Namen erhalten kann.

4.3. DieisSingleton() API

DieisSingleton-API kann verwendet werden, um abzufragen, ob diese Bean ein gemeinsam genutzter Singleton ist. Das heißt, wenngetBean(java.lang.String) immer dieselbe Instanz zurückgibt.

4.4. DieisPrototype() API

Diese API bestätigt, obgetBean(java.lang.String) unabhängige Instanzen zurückgibt - dh eine Bean, die mit dem Prototypbereich konfiguriert ist oder nicht.

Es ist wichtig zu beachten, dass diese Methode, diefalse zurückgibt, ein Singleton-Objekt nicht eindeutig anzeigt. Es zeigt nicht unabhängige Instanzen an, die auch anderen Bereichen entsprechen können.

Wir müssen die OperationisSingleton(java.lang.String)verwenden, um explizit nach einer gemeinsam genutzten Singleton-Instanz zu suchen.

4.5. Andere APIs

Während die MethodeisTypeMatch(String name, Class targetType) prüft, ob die Bean mit dem angegebenen Namen mit dem angegebenen Typ übereinstimmt, istgetType(String name) hilfreich, um den Typ der Bean mit dem angegebenen Namen zu identifizieren.

Schließlich gebengetAliases(String name) die Aliase für den angegebenen Bean-Namen zurück, falls vorhanden.

5. BeanFactory API

BeanFactory enthält Bean-Definitionen und instanziiert sie, wenn sie von der Client-Anwendung gefragt werden - was bedeutet:

  • Es kümmert sich um den Lebenszyklus einer Bohne, indem es sie instanziiert und geeignete Vernichtungsmethoden aufruft

  • Es ist in der Lage, Assoziationen zwischen abhängigen Objekten zu erstellen, während sie instanziiert werden

  • Es ist wichtig darauf hinzuweisen, dassBeanFactory die auf Anmerkungen basierende Abhängigkeitsinjektion nicht unterstützt, währendApplicationContext, eine Obermenge von BeanFactory, dies tut

Lesen SieApplication Context durch, um herauszufinden, was es zusätzlich kann.

6. Die Bohne definieren

Definieren wir eine einfache Bohne:

public class Employee {
    private String name;
    private int age;

    // standard constructors, getters and setters
}

7. BeanFactory mit XML konfigurieren

Wir können dieBeanFactory mit XML konfigurieren. Erstellen wir eine Dateibean factory-example.xml:




  
    
    
  
  

Beachten Sie, dass wir einen Alias ​​für die Beanemployeeerstellt haben.

8. BeanFactory mitClassPathResource

ClassPathResource gehört zum Paketorg.springframework.core.io. Führen Sie einen kurzen Test durch und initialisieren SieXmlBeanFactory mitClassPathResource wie unten gezeigt:

public class BeanFactoryWithClassPathResourceTest {

    @Test
    public void createBeanFactoryAndCheckEmployeeBean() {
        Resource res = new ClassPathResource("beanfactory-example.xml");
        BeanFactory factory = new XmlBeanFactory(res);
        Employee emp = (Employee) factory.getBean("employee");

        assertTrue(factory.isSingleton("employee"));
        assertTrue(factory.getBean("employee") instanceof Employee);
        assertTrue(factory.isTypeMatch("employee", Employee.class));
        assertTrue(factory.getAliases("employee").length > 0);
    }
}

9. Fazit

In diesem kurzen Artikel haben wir die wichtigsten Methoden kennengelernt, die die API von SpringBeanFactorybietet, und ein Beispiel zur Veranschaulichung der Konfiguration und ihrer Verwendung.

Der Code, der diese Beispiele unterstützt, ist alle verfügbarenover on GitHub.