Spring wählt aus vielen eine Schnittstellenimplementierung aus?

9

Freunde unten ist mein Code, ich versuche, Abhängigkeits-Einspritzung mit Frühling

auszuführen

Ich habe eine Schnittstelle, zwei Klassenimplementierungen dieser Schnittstelle.

Eine Bean.xml und eine Hauptmethodenklasse.

Schnittstelle IWriter.java

%Vor%

Klasse Writer.java

%Vor%

Klasse NiceWriter.java

%Vor%

Eine andere Klasse

%Vor%

Main.java

%Vor%

bean.xml

%Vor%

Wenn ich den Code Spring Container ausführen gibt die Ausgabe der Methode der Writer.java-Klasse. Ich habe nirgends angegeben, welche Implementierung auszuwählen ist. Wie greift Spring die Implementierung von Writer.java auf?

    
user2472968 02.07.2013, 11:15
quelle

3 Antworten

5

Ändern Sie Ihren Code wie folgt.

Klasse Writer.java

%Vor%

Klasse NiceWriter.java

%Vor%

Eine andere Klasse

%Vor%     
Chathuranga Tennakoon 02.07.2013, 11:45
quelle
10

Wenn es mehr als eine Implementierung der Schnittstelle gibt und Sie @Autowired verwenden, binden Sie in diesem Fall die Klasse. Wenn Sie jedoch eine bestimmte Implementierung automatisch ansteuern möchten, können Sie

verwenden %Vor%

@Qualifier-Dokumentation

Wenige Dinge, die Sie über Spring wissen müssen, sind

  • Alle Frühlingsbohnen werden verwaltet - sie "leben" in einem Container, der "Anwendungskontext" genannt wird.
  • Jede Anwendung hat einen Einstiegspunkt für diesen Kontext. Außerdem gibt es einen Ort, an dem der Anwendungskontext bootstrapped wird und alle Beans - autowired. In Web-Anwendungen kann dies ein Start-Listener sein.

Autowiring geschieht, indem eine Instanz einer Bean in das gewünschte Feld in einer Instanz einer anderen Bean gesetzt wird. Beide Klassen sollten Beans sein, d. H. Sie sollten so definiert sein, dass sie im Anwendungskontext liegen.

    
Ashish Aggarwal 02.07.2013 11:27
quelle
1

Versuchen Sie es.

%Vor%

Klasse NiceWriter.java

%Vor%

Eine andere Klasse

%Vor%     
user2606366 22.07.2013 09:59
quelle

Tags und Links