Irgendwo, wo ich gelesen habe, bietet Spring Komfort gegenüber Konfiguration. Aber die Leute von Spring bringen so viele Änderungen an der Konfiguration mit sich, dass ich jetzt wirklich verwirrt bin, die XML-Konfiguration oder die Annotation zu verwenden.
Ich möchte, dass jeder eine todsichere Methode oder Faustregel für die Verwendung von XML und Anmerkungen vorschlägt.
Beispiele bei SO zeigen, dass viele Anfänger wie ich über die Konfiguration verwirrt sind.
-
Ich scheine die Funktionalität hinter
<context:annotation-config>
und nicht zu verstehen<context:component-scan>
.Nach dem, was ich gelesen habe, scheinen sie unterschiedliche Anmerkungen zu verarbeiten (@Required, @Autowired usw. vs @Component, @Repository, @Service usw.), aber auch nach dem, was ich gelesen habe, registrieren sie dieselben Bean-Postprozessor-Klassen.
Um mich noch mehr zu verwirren, gibt es ein
annotation-config
Attribut auf<context:component-scan>
... -
Ich habe immer noch das Komponenten-Scan-Tag:
<context:component-scan base-package="com.mycompany.maventestwebapp" />
aber ich habe auch einen anderen Tag (der aussieht, als hätte er eine ähnliche Aufgabe), diesen:
<annotation-driven />
Was ist der Unterschied zwischen diesen beiden Tags? Eine andere "seltsame" Sache ist, dass das vorherige Beispiel (das das annotationsgesteuerte Tag nicht verwendet) dem von STS mithilfe des Spring MVC Template-Projekts erstellten Projekt sehr ähnlich ist, aber wenn ich das annotationsgesteuerte Tag aus seiner Konfiguration lösche Datei das Projekt nicht ausführen und geben Sie mir den folgenden Fehler: HTTP Status 404 - ...
Spring 3.2 benötigt cglib nicht mehr zum Proxying, niedrigere Versionen verwenden jedoch cglib. Ein Zitat aus dem springsource Blog
Um solche Proxys zu generieren, verwendet Spring eine Drittanbieter-Bibliothek namens cglib. Leider ist dieses Projekt nicht mehr aktiv. In Spring 3.2 wird Spring sehr wahrscheinlich standardmäßig Javassist verwenden.
Reichen diese aus, um darauf hinzuweisen, dass Spring Verwirrung über die Konfiguration ist?