@Qualifier Annotation Spring Boot erklärt
Die @Qualifier-Annotation in Spring Boot wird verwendet, um Mehrdeutigkeiten aufzulösen, wenn Sie mehrere Beans desselben Typs haben, aber eine bestimmte injizieren möchten. Es hilft Spring zu bestimmen, welche Bean automatisch verdrahtet werden soll, wenn mehrere Kandidaten vorhanden sind.
Hier sind alle gängigen Szenarien, in denen @Qualifier nützlich ist, mit Beispielen:
Szenario 1: Mehrere Bohnen desselben Typs
Möglicherweise haben Sie mehrere Bohnen derselben Sorte und möchten eine bestimmte einspritzen.
Beispiel:
import org.springframework.stereotype.Component; @Component public class Dog implements Animal { @Override public String sound() { return "Bark"; } } @Component public class Cat implements Animal { @Override public String sound() { return "Meow"; } }
Hier implementieren sowohl Hund als auch Katze die Tierschnittstelle.
Verwendung von @Qualifier:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @Service public class AnimalService { private final Animal animal; @Autowired public AnimalService(@Qualifier("cat") Animal animal) { this.animal = animal; } public String getAnimalSound() { return animal.sound(); } }
In diesem Beispiel gibt die Annotation @Qualifier("cat") an, dass die Cat-Bean in den AnimalService eingefügt werden soll. Ohne @Qualifier würde Spring aufgrund von Mehrdeutigkeit eine Ausnahme auslösen.
Szenario 2: Verwendung von @Qualifier mit primären und sekundären Beans
Manchmal haben Sie möglicherweise eine „primäre“ Bohne und andere, die weniger häufig verwendet werden, möchten aber trotzdem die spezifischen Bohne mit @Qualifier injizieren können.
Beispiel:
@Component @Primary public class Dog implements Animal { @Override public String sound() { return "Bark"; } } @Component public class Cat implements Animal { @Override public String sound() { return "Meow"; } }
Die @primary-Annotation stellt sicher, dass Dog standardmäßig injiziert wird. Sie können jedoch weiterhin @Qualifier verwenden, um Cat.
einzufügenVerwendung von @Qualifier zum Überschreiben von @primary:
@Service public class AnimalService { private final Animal animal; @Autowired public AnimalService(@Qualifier("cat") Animal animal) { this.animal = animal; } public String getAnimalSound() { return animal.sound(); } }
In diesem Fall wird die Cat-Bean aufgrund der @Qualifier-Annotation injiziert, obwohl Dog als @primary markiert ist.
Szenario 3: @Qualifier mit Konstruktorinjektion und Feldinjektion
@Qualifier kann sowohl mit konstruktorbasierter als auch mit feldbasierter Injektion verwendet werden.
Beispiel: Feldinjektion mit @Qualifier:
@Service public class AnimalService { @Autowired @Qualifier("dog") private Animal animal; public String getAnimalSound() { return animal.sound(); } }
In diesem Fall stellt der @Qualifier("dog") sicher, dass die Dog-Bean in den AnimalService eingefügt wird.
Szenario 4: @Qualifier mit Methodenparameterinjektion
Sie können @Qualifier auch verwenden, wenn Sie Abhängigkeiten über Methodenparameter einfügen.
Beispiel:
@Service public class AnimalService { private Animal animal; @Autowired public void setAnimal(@Qualifier("dog") Animal animal) { this.animal = animal; } public String getAnimalSound() { return animal.sound(); } }
Hier stellt @Qualifier("dog") sicher, dass die Dog-Bean über die Setter-Methode injiziert wird.
Szenario 5: @Qualifier mit benutzerdefinierten Anmerkungen
Sie können benutzerdefinierte Qualifizierer erstellen, um die Festcodierung von Bean-Namen zu vermeiden und so den Code sauberer und wartbarer zu machen.
Beispiel: Benutzerdefinierter Qualifizierer:
Erstellen Sie einen benutzerdefinierten Qualifier:
import org.springframework.beans.factory.annotation.Qualifier; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @Qualifier @Retention(RetentionPolicy.RUNTIME) public @interface DogQualifier { }
Wenden Sie den benutzerdefinierten Qualifier an:
@Component @DogQualifier public class Dog implements Animal { @Override public String sound() { return "Bark"; } } @Component public class Cat implements Animal { @Override public String sound() { return "Meow"; } }
Injizieren Sie mit dem benutzerdefinierten Qualifizierer:
@Service public class AnimalService { private final Animal animal; @Autowired public AnimalService(@DogQualifier Animal animal) { this.animal = animal; } public String getAnimalSound() { return animal.sound(); } }
In diesem Beispiel wird @DogQualifier verwendet, um anzugeben, welche Bohne injiziert werden soll, anstatt @Qualifier("dog") zu verwenden.
Szenario 6: @Qualifier in Sammlungen
Sie können @Qualifier beim automatischen Verdrahten einer Bohnensammlung verwenden, um sicherzustellen, dass nur bestimmte Bohnen injiziert werden.
Beispiel:
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; @Component @Qualifier("domestic") public class Dog implements Animal { @Override public String sound() { return "Bark"; } } @Component @Qualifier("domestic") public class Cat implements Animal { @Override public String sound() { return "Meow"; } } @Component public class Lion implements Animal { @Override public String sound() { return "Roar"; } }
Verwendung mit einer Sammlung:
@Service public class AnimalService { private final List<Animal> animals; @Autowired public AnimalService(@Qualifier("domestic") List<Animal> animals) { this.animals = animals; } public void printAnimalSounds() { animals.forEach(animal -> System.out.println(animal.sound())); } }
In diesem Beispiel werden nur Hunde- und Katzenbohnen injiziert, da sie mit dem @Qualifier("domestic") markiert sind.
Zusammenfassung:
@Qualifier hilft bei der Injektion bestimmter Bohnen, wenn es mehrere Kandidaten desselben Typs gibt.
Es wird in Szenarien wie Konstruktorinjektion, Feldinjektion, Methodeninjektion, benutzerdefinierten Qualifizierern und sogar mit Sammlungen verwendet.
Wenn Sie diese Szenarien verstehen, können Sie @Qualifier effektiv nutzen, um Mehrdeutigkeiten aufzulösen und die Bean-Injektion in einer Spring Boot-Anwendung zu verwalten.
Das obige ist der detaillierte Inhalt von@Qualifier Annotation Spring Boot erklärt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Fehlerbehebung und Lösungen für die Sicherheitssoftware des Unternehmens, die dazu führt, dass einige Anwendungen nicht ordnungsgemäß funktionieren. Viele Unternehmen werden Sicherheitssoftware bereitstellen, um die interne Netzwerksicherheit zu gewährleisten. ...

Lösungen zum Umwandeln von Namen in Zahlen zur Implementierung der Sortierung in vielen Anwendungsszenarien müssen Benutzer möglicherweise in Gruppen sortieren, insbesondere in einem ...

Die Verarbeitung von Feldzuordnungen im Systemdocken stößt häufig auf ein schwieriges Problem bei der Durchführung von Systemdocken: So kartieren Sie die Schnittstellenfelder des Systems und ...

Beginnen Sie den Frühling mit der Intellijideaultimate -Version ...

Bei Verwendung von MyBatis-Plus oder anderen ORM-Frameworks für Datenbankvorgänge müssen häufig Abfragebedingungen basierend auf dem Attributnamen der Entitätsklasse erstellt werden. Wenn Sie jedes Mal manuell ...

Konvertierung von Java-Objekten und -Arrays: Eingehende Diskussion der Risiken und korrekten Methoden zur Konvertierung des Guss-Typs Viele Java-Anfänger werden auf die Umwandlung eines Objekts in ein Array stoßen ...

Wie erkennt die Redis -Caching -Lösung die Anforderungen der Produktranking -Liste? Während des Entwicklungsprozesses müssen wir uns häufig mit den Anforderungen der Ranglisten befassen, z. B. das Anzeigen eines ...

Detaillierte Erläuterung des Designs von SKU- und SPU-Tabellen auf E-Commerce-Plattformen In diesem Artikel werden die Datenbankdesignprobleme von SKU und SPU in E-Commerce-Plattformen erörtert, insbesondere wie man mit benutzerdefinierten Verkäufen umgeht ...
