Spring-Framework setzt auf Frühling IoC (Inversion of Control) Container alle Komponenten zu erstellen und sie initialisieren, indem ihre Abhängigkeiten zu injizieren. Die Abhängigkeiten werden durch Konstruktoren, Setter und/oder Felder unter Verwendung der reflection API injiziert.
Hier kommentierten Sie das Feld baseService
mit dem Vermerk Autowired
die den Frühling IoC Container zeigen eine Bohne vom Typ BaseService
, wenn zu dem Zeitpunkt injizieren der Behälter Ihre Controller
erstellen muss, hat sich die Abhängigkeit noch nicht erstellt und initialisiert, tut es dies automatisch und wenn diese Bean Abhängigkeiten hat, wendet sie die gleiche Logik auf die Abhängigkeiten an, bis der Abhängigkeitsbaum vollständig erstellt und initialisiert wurde. So funktioniert es auf den Punkt gebracht.
Wenn wir zwei Controller-Klassen A & B, mit der Abhängigkeit von BaseService. Erstellt der Spring-Container zwei Objekte und fügt sie separat in A oder B ein oder Nur eine Instanz von BaseService wird unter für alle Klassen aufgeteilt, für die eine Abhängigkeit besteht.
Es auf dem Rahmen ab, die Sie auf Ihrer Bean Erklärung gesetzt, wenn der Umfang Singleton ist, wird der Behälter nur eine Instanz Bean erstellen und in Ihrem Controller die gleiche Instanz injiziert dann. Wenn Sie beispielsweise Prototyp wählen, erstellt er eine neue Instanz Ihrer Bean für jeden Ihrer Controller. Wenn Sie wissen, dass singleton der Standardbereich ist, wird dieselbe Instanz injiziert. Weitere Informationen zu den unterstützten Bereichen in Spring IoC Container finden Sie unter this.
Dank @Nicolas Filotto auf diese Frage Hinzufügen gesetzt, wenn wir zwei Controller-Klassen A & B haben, mit der Abhängigkeit von BaseService. Erstellt Spring-Container zwei Objekte und injiziert sie separat in A und B oder Nur eine Instanz von BaseService wird von allen Klassen mit Abhängigkeiten gemeinsam genutzt. – Giridhar
Antwort aktualisiert, bitte überprüfen –