Federnabhängigkeitsinjektion (DI)
In Spring FrameWork wird das Entwurfsmuster "Dependency Injection" (DI) verwendet, um die Objektabhängigkeiten untereinander zu definieren. Es gibt zwei Haupttypen:
-
Setter Injection
-
Konstruktor-Injection
1. Setter Injection
Dies ist die beliebteste und einfachste DI-Methode. Sie injiziert die Abhängigkeit über eine Setter-Methode.
Beispiel
Eine Hilfsklasse mit einer Setter-Methode.
package com.example.output; import com.example.output.IOutputGenerator; public class OutputHelper { IOutputGenerator outputGenerator; public void setOutputGenerator(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
Eine Bean-Konfigurationsdatei zum Deklarieren der Beans und zum Festlegen der Abhängigkeit über Setter-Injection (Property-Tag).
Sie fügen einfach eine Bean "CsvOutputGenerator" über eine Setter-Methode (setOutputGenerator) in das Objekt "OutputHelper" ein.
2. Konstruktor-Injection
Diese DI-Methode injiziert die Abhängigkeit über einen Konstruktor.
Beispiel
Eine Helferklasse mit einem Konstruktor.
package com.example.output; import com.example.output.IOutputGenerator; public class OutputHelper { IOutputGenerator outputGenerator; OutputHelper(IOutputGenerator outputGenerator){ this.outputGenerator = outputGenerator; } }
Eine Bean-Konfigurationsdatei zum Deklarieren der Beans und zum Festlegen der Abhängigkeit über die Konstruktorinjektion (constructor-arg-Tag).
Sie fügen einfach eine Bean "CsvOutputGenerator" über einen Konstruktor in das Objekt "OutputHelper" ein.
Setter- oder Constructor-Injection?
Es gibt keine festen Regeln für das Spring-Framework. Verwenden Sie einfach den DI-Typ, der Ihren Projektanforderungen entspricht. Aufgrund der Einfachheit der Setter-Einspritzung wird diese jedoch für die meisten Szenarien immer ausgewählt.