XML-basierte Injektion im Frühjahr

1. Einleitung

In diesem grundlegenden Tutorial erfahren Sie, wie Sie mit dem Spring Framework eine einfache XML-basierte Bean-Konfiguration durchführen.

2. Übersicht

Beginnen wir mit dem Hinzufügen der Bibliotheksabhängigkeit von Spring in der Datei pom.xml :

 org.springframework spring-context 5.1.4.RELEASE  

Die neueste Version der Spring-Abhängigkeit finden Sie hier.

3. Abhängigkeitsinjektion - ein Überblick

Die Abhängigkeitsinjektion ist eine Technik, bei der Abhängigkeiten eines Objekts von externen Containern bereitgestellt werden.

Angenommen, wir haben eine Anwendungsklasse, die von einem Dienst abhängt, der die Geschäftslogik tatsächlich verarbeitet:

public class IndexApp { private IService service; // standard constructors/getters/setters } 

Angenommen , IService ist eine Schnittstelle:

public interface IService { public String serve(); } 

Diese Schnittstelle kann mehrere Implementierungen haben.

Lassen Sie uns einen kurzen Blick auf eine mögliche Implementierung werfen:

public class IndexService implements IService { @Override public String serve() { return "Hello World"; } } 

Hier ist IndexApp eine übergeordnete Komponente, die von der untergeordneten Komponente namens IService abhängt .

Im Wesentlichen entkoppeln wir IndexApp von einer bestimmten Implementierung des IService, die je nach den verschiedenen Faktoren variieren kann.

4. Abhängigkeitsinjektion - in Aktion

Mal sehen, wie wir eine Abhängigkeit einfügen können.

4.1. Eigenschaften verwenden

Mal sehen, wie wir die Abhängigkeiten mithilfe einer XML-basierten Konfiguration miteinander verbinden können:

Wie zu sehen ist, erstellen wir eine Instanz von IndexService und weisen ihr eine ID zu. Standardmäßig ist die Bean ein Singleton. Außerdem erstellen wir eine Instanz von IndexApp .

Innerhalb dieser Bean injizieren wir die andere Bean mit der Setter-Methode.

4.2. Konstruktor verwenden

Anstatt eine Bean über die Setter-Methode zu injizieren, können wir die Abhängigkeit mit dem Konstruktor injizieren:

4.3. Verwenden von Static Factory

Wir können auch eine Bohne injizieren, die von einer Fabrik zurückgegeben wurde. Erstellen wir eine einfache Factory, die eine Instanz von IService basierend auf der angegebenen Nummer zurückgibt :

public class StaticServiceFactory { public static IService getNumber(int number) { // ... } } 

Lassen Sie uns nun sehen, wie wir die obige Implementierung verwenden können, um eine Bean mithilfe einer XML-basierten Konfiguration in IndexApp einzufügen :

Im obigen Beispiel rufen wir die statische getService- Methode mit der factory-Methode auf, um eine Bean mit der ID messageService zu erstellen, die wir in IndexApp einfügen.

4.4. Verwenden der Factory-Methode

Betrachten wir eine Instanzfactory , die eine Instanz von IService basierend auf der angegebenen Nummer zurückgibt . Diesmal ist die Methode nicht statisch:

public class InstanceServiceFactory { public IService getNumber(int number) { // ... } } 

Nun wollen wir sehen, wie wir die obige Implementierung verwenden können, um eine Bean mithilfe der XML-Konfiguration in IndexApp einzufügen :

Im obigen Beispiel rufen wir die getService- Methode für eine Instanz von InstanceServiceFactory mit der factory-Methode auf, um eine Bean mit der ID messageService zu erstellen, die wir in IndexApp einfügen .

5. Testen

So können wir auf konfigurierte Beans zugreifen:

@Test public void whenGetBeans_returnsBean() { ApplicationContext applicationContext = new ClassPathXmlApplicationContext("..."); IndexApp indexApp = applicationContext.getBean("indexApp", IndexApp.class); assertNotNull(indexApp); } 

6. Fazit

In diesem kurzen Tutorial haben wir Beispiele veranschaulicht, wie wir Abhängigkeiten mithilfe der XML-basierten Konfiguration mit Spring Framework einfügen können.

Die Implementierung dieser Beispiele finden Sie im GitHub-Projekt - dies ist ein Maven-basiertes Projekt, daher sollte es einfach zu importieren und unverändert auszuführen sein.