2016-07-14 8 views
0

Auszug aus Spring doc:Constructor basierend Dependency Injection in Spring

The Spring-Team setzt sich im Allgemeinen Konstruktor Injektion, da es eines Anwendungskomponenten als unveränderliche Objekte implementieren können und sicherzustellen, dass erforderlichen Abhängigkeiten nicht null sind.

Meine Frage ist, ob Unveränderlichkeit sowie null Abhängigkeiten sind nur möglich mit Constructor basiert DI & ist, dass nicht über Setter basierend DI erreichbar?

+1

Wenn Sie vergessen, den Setter aufzurufen, wird die zugehörige Eigenschaft nicht initialisiert bleiben, d. H. Null, der Compiler wird sich nicht beschweren. Wenn Sie * einen * Setter haben, erlauben Sie ausdrücklich eine Änderung. Was für ein Beispiel brauchst du, um das zu veranschaulichen? – kryger

+0

Der Aufruf eines Setter mutiert das Objekt, daher bin ich mir nicht sicher, ob ich Ihre Frage verstehe. – zeroflagL

Antwort

0

Wenn Ihre Klasse eine Setter-Methode für ein abhängiges Objekt der Klasse B verfügbar macht, können Sie die Setter-Methode für eine Instanz von A aufrufen und die Abhängigkeit ändern. Wenn Ihre Klasse A ein abhängiges Objekt der Klasse B nur über Konstruktorparameter erhalten kann, dann haben Sie Komponenten als unveränderliche Objekte, außerdem erfordert Autowiring standardmäßig keine Null-Objekte, und wenn Sie Null-Objekt an Konstruktorparameter übergeben, kann spin keine Objekte instanziieren stellt sicher, dass die erforderlichen Abhängigkeiten nicht null sind.