Blog

Frühling 2.5 - Starke automatische Verdrahtung

Priyanshu Goyal

Aktualisiert Oktober 23, 2025
3 Minuten

Das Konzept der automatischen Verdrahtung von Beziehungen zwischen springfähigen Beans hat es schon immer gegeben. Die Idee hinter der automatischen Verdrahtung ist es, die mühsame Aufgabe zu umgehen, eine explizite Verdrahtung festzulegen und vor allem zu pflegen. Ursprünglich wurde die automatische Verdrahtung über den Namen, den Typ, die Konstruktoren oder die automatische Erkennung unterstützt und Sie hatten die Möglichkeit, alle oder bestimmte Beans innerhalb eines Kontexts automatisch zu verdrahten. Aber mit Spring 2.5 hat das Konzept der automatischen Verdrahtung eine ganz neue Bedeutung bekommen und damit auch die Debatte, ob wir wirklich eine automatische Verdrahtung durchführen wollen.Spring 2.5 hat eine neue @Autowire-Annotation. Mit der @Autowire-Annotation können wir eine viel feinkörnigere automatische Verdrahtung vornehmen, als es vorher möglich war, und sie macht uns auch viel expliziter, als es in der Zeit vor Spring 2.5 möglich war

Lassen Sie uns einige Beispiele betrachten

1

[java]@Autowired
public void init(AccountDao accountDao, CustomerDao customerDao) {
this.accountDao = accountDao;
this.customerDao = customerDao;
}[/java]

Sie müssen keine Setter mit einem Parameter haben, um Abhängigkeiten zu injizieren. Jede Methode mit einem beliebigen Namen und einer beliebigen Anzahl von Parametern genügt. Kann auch auf Felder und Konstruktoren angewendet werden und natürlich auf die beliebten Setter :)

2

[java]@Autowired
private BaseDao[] daos;[/java]

oder

[java]@Autowired
private Set daos;[/java]

Erstellen Sie ein Array oder eine Sammlung mit allen möglichen Beans, die im Kontext...

3

[java]@Autowired(required=false)
private AccountDao accountDao = new AccountDao();[/java]

Finden Sie es, tun Sie es, wenn nicht, lassen Sie es. Wir können dies sogar noch feiner steuern, indem wir eine weitere Annotation @Qualifier verwenden. Lassen Sie uns noch ein paar weitere Beispiele sehen

4

[java]@Autowired
@Qualifier("bankService")
private BankService bkService;[/java]

Wir führen eine automatische Verdrahtung nach Namen durch, indem wir einen Bean-Namen in der Annotation angeben. Dies kann hilfreich sein, wenn Sie den Namen der Eigenschaft anders als den Namen der Bean deklarieren.

5 - Beispiel für benutzerdefinierte Qualifier-Annotationen für den Fall, dass wir mehr als eine Implementierung haben, die wir automatisch verkabeln möchten

Definieren Sie eine Bemerkung wie diese

[java]@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface Category {
String value();
}[/java]
Custom qualifier on autowired fields can be applied like this
[java]public class BookList {
@Autowired
@Category("Technical")
private Book technicalBook;
@Autowired
@Category("Management")
private Book managementBook;
}[/java]

und führen Sie dann die Bean-Definitionen wie folgt aus

[xml]

[/xml]

Und wenn das nicht ausreicht, können wir jederzeit einen benutzerdefinierten Auto-Wire-Konfigurator erstellen oder die neue @Resource-Annotation für weitere Auto-Wiring-Funktionen verwenden. Das war's für Auto-Wiring, aber Spring 2.5 führt ein Konzept der automatischen Erkennung von Spring-Komponenten auf dem Klassenpfad ein, bei dem wir die Beans (mit dem Namen und der Bean-Klasse) nicht einmal im Kontext definieren müssen. Spring durchsucht den Klassenpfad nach Komponenten (die mit Hilfe von Filtern konfiguriert werden können), indem es stereotypisierte Klassen erkennt und sie dann als Spring-aktivierte Beans registriert. Ja, es bietet eine große Flexibilität und eine viel größere Kontrolle, wie Sie an den obigen Beispielen sehen können, aber ich bin immer noch der Meinung, dass dies mit großer Vorsicht und einer "Ich werde konsequent sein"-Einstellung geschehen sollte.

Verfasst von

Priyanshu Goyal

Contact

Let’s discuss how we can support your journey.