-
Notifications
You must be signed in to change notification settings - Fork 4
Spring Inversion of Control
Spring Inversion of Control (IoC) ist ein Design-Pattern, das die Kontrolle über die Erstellung und Verwaltung von Objekten in einer Anwendung von der Anwendung selbst auf das Framework überträgt.
Im Wesentlichen bedeutet dies, dass das Framework die Erstellung, Verwaltung und Verknüpfung von Objekten übernimmt, anstatt dass die Anwendung dies selbst tut.
Durch die Verwendung von IoC kann eine Anwendung modularer und flexibler werden. Das Framework erzeugt und verknüpft Objekte, was den Code einfacher und weniger fehleranfällig macht. Durch die Verwendung von IoC können zudem weitere Vorteile entstehen:
-
Testbarkeit: Testfälle können einfacher und schneller erstellt werden, da sichere Mock-Objekte erzeugt und injiziert werden können.
-
Modularität: Jede Komponente kann unabhängig voneinander entwickelt und ausgetauscht werden, da jede Komponente in sich geschlossen ist.
Ein einfaches Beispiel für Spring IoC wäre ein Konfigurations-File, das alle erforderlichen Bean-Definitionen enthält, um eine Anwendung auszuführen. In der folgenden Java-Datei wird eine KlassenA-Klasse erstellt, die eine KlasseB-Klasse mit einem String als Argument injiziert:
public class KlasseA {
private KlasseB klasseB;
private String name;
public KlasseA(KlasseB klasseB, String name) {
this.klasseB = klasseB;
this.name = name;
}
public void hello() {
klasseB.sagHallo(name);
}
}
public class KlasseB {
public void sagHallo(String name) {
System.out.println("Hallo, " + name + "!");
}
}In Spring IoC kann dies wie folgt konfiguriert werden:
<beans>
<bean id="klasseB" class="my.package.KlasseB" />
<bean id="klasseA" class="my.package.KlasseA">
<constructor-arg ref="klasseB" />
<constructor-arg value="John" />
</bean>
</beans>Dies erzeugt eine KlasseA-Instanz mit einer KlasseB-Instanz, die implizit mit dem Namen klasseB im Konfigurationsfile zugeordnet ist. Wenn hello() auf der Instanz von KlasseA aufgerufen wird, ruft dies die sagHallo()-Methode auf klasseB auf.
Durch die Verwendung von IoC und dem Konfigurations-File wird die Konstruktion und Verwaltung von Objekten in der Anwendung vereinfacht.