Spring Dependency Injection für Schnittstellen

7

Nun, ich habe mir einige Tutorials über Spring-Abhängigkeitsinjektionen sowie MVC angeschaut, aber ich verstehe immer noch nicht, wie wir Klassen spezifisch instanziieren können.

Ich meine, wenn ich zum Beispiel eine Variable habe

%Vor%

Wie kann ich bewirken, dass spring ein Objekt als eine Instanz von Klasse B erstellt, die ClassA erweitern würde? wie someObject = new ClassB ();

Ich verstehe nicht wirklich, wie es im Frühling funktioniert, macht ContextLoaderListener es automatisch oder müssen wir irgendeine Art von Konfigurationsklasse erstellen, in der wir genau angeben, in welcher Quelle diese Klassen instanziiert werden sollen? (In diesem Fall habe ich das nirgends in den Tutorials gesehen.) Wenn ja, wie geben wir an und wie sieht es aus? Und wie konfigurieren wir es in web.xml usw.?

    
Arturas M 11.12.2012, 06:57
quelle

3 Antworten

19

Du kannst es so machen:

Schnittstelle:

%Vor%

Implementierung:

%Vor%

Kunde:

%Vor%

Nun haben Sie Ihre Schnittstelle definiert, eine Implementierung geschrieben und diese als Komponente markiert - docs hier . Jetzt ist nur noch etwas zu sagen Frühling, wo Komponenten zu finden, so dass sie zum Autowiren verwendet werden können.

%Vor%     
Stefan 11.12.2012, 07:11
quelle
1

Sie müssen den Typ der Klasse angeben, der Sie das Objekt in Ihrer Datei applicationContext.xml erstellen möchten, oder Sie können diese Klasse direkt mit @Component , @Service oder @Repository annotieren, wenn Sie sie verwenden neueste Version von Spring. In web.xml müssen Sie den Pfad der XML-Dateien als Kontextparameter für das Servlet angeben, wenn Sie die XML-basierte Konfiguration verwenden.

    
Sumit Desai 11.12.2012 07:05
quelle
0

Ja, Sie müssen eine context.xml-Datei angeben, in der Sie die Instanzen angeben. Geben Sie es dem ApplicationContext und es werden alle Felder für Sie automatisch.

Ссылка

    
sorencito 11.12.2012 07:01
quelle