Anleitung zur Spring BeanFactory

1. Einleitung

Dieser Artikel konzentriert sich auf die Erforschung der Spring BeanFactory-API .

Die BeanFactory-Schnittstelle bietet 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 das Instanziieren, Konfigurieren und Zusammenstellen der Beans verantwortlich. Der Container erhält seine Informationen darüber, welche Objekte instanziiert, konfiguriert und verwaltet werden sollen, indem er die für die Anwendung definierten Konfigurationsmetadaten liest.

3. Maven-Abhängigkeiten

Fügen wir der Datei pom.xml die erforderliche Maven-Abhängigkeit hinzu . Wir werden die Spring Beans-Abhängigkeit verwenden, um die BeanFactory einzurichten:

 org.springframework spring-beans 5.2.8.RELEASE 

4. Die BeanFactory- Schnittstelle

Es ist interessant, zunächst einen Blick auf die Schnittstellendefinition im Paket org.springframework.beans.factory zu werfen und hier einige wichtige APIs zu diskutieren.

4.1. Die getBean () APIs

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

4.2. Die enthältBean () API

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

4.3. Die isSingleton () API

Die isSingleton- API kann verwendet werden, um abzufragen, ob diese Bean ein gemeinsam genutzter Singleton ist. Dies ist der Fall, wenn getBean (java.lang.String) immer dieselbe Instanz zurückgibt .

4.4. Die isPrototype () API

Diese API bestätigt, ob getBean (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, die false zurückgibt, nicht eindeutig auf ein Singleton-Objekt hinweist. Es zeigt nicht unabhängige Instanzen an, die auch anderen Bereichen entsprechen können.

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

4.5. Andere APIs

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

Schließlich gibt getAliases (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 dies von der Client-Anwendung angefordert wird. Dies bedeutet:

  • Es kümmert sich um den Lebenszyklus einer Bohne, indem es sie instanziiert und geeignete Zerstörungsmethoden aufruft
  • Es ist in der Lage, Assoziationen zwischen abhängigen Objekten zu erstellen und diese zu instanziieren
  • Es ist wichtig darauf hinzuweisen, dass BeanFactory die Annotation-basierte Abhängigkeitsinjektion nicht unterstützt, während ApplicationContext , eine Obermenge von BeanFactory, dies tut

Lesen Sie den Anwendungskontext, um herauszufinden, was er 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. Konfigurieren der BeanFactory mit XML

Wir können die BeanFactory mit XML konfigurieren . Erstellen wir eine Datei bean factory-example.xml:

Beachten Sie, dass wir auch einen Alias ​​für die Mitarbeiter- Bean erstellt haben.

8. BeanFactory mit ClassPathResource

ClassPathResource gehört zum Paket org.springframework.core.io . Lassen Sie uns einen kurzen Test ausführen und XmlBeanFactory mit ClassPathResource wie folgt initialisieren :

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 der Spring BeanFactory- API und ein Beispiel zur Veranschaulichung der Konfiguration und ihrer Verwendung kennengelernt .

Der Code, der diese Beispiele unterstützt, ist auf GitHub verfügbar.