EnableWebMvc Annotation Bedeutung

76

Ich habe Javadoc gelesen @EnableWebMvc.

Aber ich verstehe nicht, was diese Anmerkung bedeutet?

Können Sie es klar ausdrücken?


quelle

Antworten:

100

Wenn Sie zum Konfigurieren Ihrer Spring-Anwendung Java-Code (im Gegensatz zu XML) @EnableWebMvcverwenden, wird Spring MVC aktiviert. Wenn Sie noch nicht mit der Unterstützung von Spring für die Java-Konfiguration vertraut sind, ist dies ein guter Ausgangspunkt .

@EnableWebMvcentspricht <mvc:annotation-driven />in XML. Es ermöglicht die Unterstützung von mit @ControllerAnmerkungen versehenen Klassen, @RequestMappingmit denen eingehende Anforderungen einer bestimmten Methode zugeordnet werden. Ausführliche Informationen dazu, was standardmäßig konfiguriert wird und wie die Konfiguration angepasst werden kann, finden Sie in der Referenzdokumentation .

Andy Wilkinson
quelle
1
Was ist mvc: annotationsgesteuert?
Koray Tugay
"Es ermöglicht die Unterstützung von mit @ Controller annotierten Klassen" ist nicht korrekt. Aus Spring Docs,To enable auto-detection of such @Controller beans, you can add component scanning
Rich
Es ist richtig. Ohne @EnableWebMvcist eine @ControllerBohne nur eine Bohne, kein Controller. Dies gilt unabhängig davon, ob es über das Scannen von Komponenten gefunden oder über eine @BeanMethode registriert wurde .
Andy Wilkinson
49

Willkommen in der Welt des Frühlings. Es gibt etwas, das Sie verstehen müssen, bevor Sie wissen, was die Anmerkung @EnableWebMVCbedeutet.

Spring unterstützt traditionell zwei Arten von Konfigurationen:

Diese Anmerkungen werden im Wesentlichen als Teil von MVC Java Config Design implementiert .

Betrachten Sie eine einfache Klasse:

@EnableWebMvc
@Configuration
public class WebConfig {
}

Es gibt keine Basisklassen. Keine Frühlingsbohnen in Sicht .. Hmmm ..

Gehen wir noch ein bisschen weiter:

  • Was bietet das eigentlich ..?

Nun, um Sie ein bisschen mehr zu langweilen, bietet es eine Menge Dinge wie:

  1. @ MVC-Anforderungsverarbeitung
  2. Globaler JSR-303-Validator

und noch ein paar mehr.

Ahahah ... Aber Ihre Anwendung funktioniert richtig damit. Also, wo ist die Magie?

@EnableWebMVC <---- What's behind this..?

Das steckt dahinter:

@Retention(RetentionPolicy.RUNTIME)
@Import(DelegatingWebMvcConfiguration.class)
@Target(ElementType.TYPE)
public @interface EnableWebMvc {
}

Sehen Sie, jetzt würden Sie denken, wie sinnlos mit @EnableWebMVC. Würdest Du eher:

Sie können nachlesen über:

Ich hoffe es hilft. :) :)

user2339071
quelle
1

Durch Hinzufügen dieser Anmerkung zu einer @ Configuration-Klasse wird die Spring MVC-Konfiguration aus WebMvcConfigurationSupport importiert

Mahibub Nadaf
quelle
1

Wenn wir ein Spring Web MVC-Projekt erstellen möchten, müssen wir den erforderlichen Import aus hinzufügen. Aus WebMvcConfigurationSupportdiesem Grund sollten wir ihn @EnableWebMvcin einer Java-basierten Konfiguration verwenden. Nur eine @ConfigurationKlasse darf haben @EnableWebMvc.

Lokman Hossain
quelle