Spring MVC – Komponentenscan vs. Annotation-Config vs. annotationsgesteuert

Wenn Sie ein Spring-Entwickler sind, sind Sie möglicherweise etwas verwirrt über die Annotationsverarbeitung im IOC-Container von Spring. Frühlings-MVC Das Framework stellt verschiedene Konfigurationselemente bereit, die dem Spring-Container helfen oder ihn anweisen, die Beans effektiv zu verwalten und die Beans bei Bedarf zu injizieren. Einige der XML-Konfigurationen, die in unseren Spring-Konfigurationsdateien am häufigsten vorkommen, sind:

  • context:component-scan
  • mvc:annotation-config
  • context:annotationsgesteuert

Die Funktionalität der oben genannten Anmerkungen ist ähnlich und es gibt kaum Unterschiede in der Art und Weise, wie sie auf die spezifischen Szenarien reagieren. Dieses Tutorial beleuchtet den wichtigen Punkt zu jedem Element und wann es für die Anwendung erforderlich ist. Wenn Sie Fragen zum Spring Framework haben, schreiben Sie diese bitte in die Kommentare oder posten Sie sie auf unserer Facebook-Seite.

lesen Sie auch:

  • Frühlings- und Ruhezustandsintegration
  • Spring MVC Framework

context:component-scan

Dieses Element wurde in der Spring-Konfiguration ab Version 2.5 eingeführt. Wenn Sie mit den Vorgängerversionen von Spring gearbeitet haben, müssen alle Beans manuell in den XML-Dateien konfiguriert werden. In den Java Beans werden keine Annotationen unterstützt. Dies führt zu einer Menge XML-Code in den Konfigurationsdateien und jedes Mal muss der Entwickler die XML-Datei aktualisieren, um die neuen Beans zu konfigurieren. context:component-scan -Element in der Spring-Konfigurationsdatei würde die Notwendigkeit beseitigen, alle Beans in den XML-Dateien zu deklarieren. Sehen Sie sich die folgende Deklaration in Ihrer Spring-Konfigurationsdatei an:

<context:component-scan base-package="org.controller"/>

Die obige Deklaration in der Konfigurationsdatei der Spring-Anwendung würde die Klassen innerhalb des angegebenen Pakets scannen und die Beans-Instanz erstellen. Beachten Sie, dass Beans nur erstellt werden können, wenn diese Klasse mit korrekten Annotationen versehen ist. Die folgenden Anmerkungen werden von diesem Element gescannt:

  • @Komponente
  • @Repository
  • @Service
  • @Regler

Ein Vorteil dieses Elements besteht darin, dass es auch @Autowired- und @Qualifier-Annotationen auflöst. Deshalb, wenn Sie es erklären ist nicht mehr notwendig deklarieren zu.

mvc:annotationsgesteuert

mvc:annotationsgesteuert wird zum Aktivieren der Spring MVC-Komponenten mit ihren Standardkonfigurationen verwendet. Wenn Sie mvc:annotation-driven nicht einschließen, funktioniert Ihre MVC-Anwendung auch, wenn Sie den context:component-scan zum Erstellen der Beans verwendet oder die Beans in Ihrer XML-Datei definiert haben. Aber mvc:annotation-driven erledigt einige zusätzliche Aufgaben bei der Konfiguration der speziellen Beans, die nicht konfiguriert worden wären, wenn Sie dieses Element nicht in Ihrer XML-Datei verwenden würden.

Dieses Tag würde das HandlerMapping und den HandlerAdapter registrieren, die zum Versenden von Anforderungen an Ihre @Controller erforderlich sind. Darüber hinaus werden auch einige Standardeinstellungen angewendet, die auf dem basieren, was in Ihrem Klassenpfad vorhanden ist. Solche Standardwerte sind:

  • Verwendung des Spring 3 Type ConversionService als einfachere und robustere Alternative zu JavaBeans PropertyEditors
  • Unterstützung für die Formatierung von Zahlenfeldern mit @NumberFormat
  • Unterstützung für die Formatierung von Datums-, Kalender- und Joda-Zeitfeldern mit @DateTimeFormat, wenn sich Joda Time im Klassenpfad befindet
  • Unterstützung für die Validierung von @Controller-Eingaben mit @Valid, wenn sich ein JSR-303-Anbieter im Klassenpfad befindet
  • Unterstützung für das Lesen und Schreiben von XML, wenn sich JAXB im Klassenpfad befindet
  • Unterstützung für das Lesen und Schreiben von JSON, wenn sich Jackson im Klassenpfad befindet

context:annotation-config

context:annotation-config wird zum Aktivieren von Annotationen in Beans verwendet, die bereits im Anwendungskontext registriert sind (unabhängig davon, ob sie mit XML oder durch Paketscannen definiert wurden). Das bedeutet, dass @Autowired- und @Qualifier-Annotationen für die Beans aufgelöst werden, die bereits erstellt und im Spring-Container gespeichert sind.

context:component-scan kann den gleichen Job auch machen, aber context:component-scan scannt auch die Pakete, um die Beans im Anwendungskontext zu registrieren. context:annotation-config sucht nicht nach der Beans-Registrierung, sondern aktiviert nur die bereits registrierten Beans im Kontext.

Bitte lesen Sie dies Verknüpfung für weitere Erläuterungen mit Beispielen.

Wenn Sie Unterstützung für Spring MVC-Anwendungen suchen, posten Sie diese bitte im Kommentarbereich. Wir helfen Ihnen gerne weiter und lösen die technischen Probleme. Fröhliches Lesen!!

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen