Spring MVC et Servlets 3.0 - avez-vous encore besoin web.xml?
Dans un typique Spring MVC, web app, vous pouvez déclarer la DispatcherServlet
dans web.xml
comme
<!-- MVC Servlet -->
<servlet>
<servlet-name>sample</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>sample</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Avec les auditeurs, les filtres, etc.
Avec servlet-api 3.0, vous pouvez déclarer vos servlets avec l'annotation @WebServlet
au lieu de les ajouter à votre web.xml
. Printemps 3.2 a déjà @Configuration
et @EnableXYZ
de son contexte de configuration. A-t-elle quelque chose de similaire pour le DispatcherServlet
, c'est à dire. est-il un moyen de configurer votre plein Printemps application sans aucune xml?
Vous devez vous connecter pour publier un commentaire.
Avec JEE6, si votre application conteneur de Servlet 3.0 ce que vous devez faire est de:
com.foo.FooServletContainer
)META-INF/services
dossier nomméjavax.servlet.ServletContainerInitializer
qui va contenir le nom de votre mise en œuvre ci-dessus (com.foo.FooServletContainer
)Printemps 3 est livré avec une classe nommée
SpringServletContainerInitializer
qui implémente les trucs ci-dessus (si vous n'avez pas besoin de créer vous-même le fichier dansMETA-INF/services
. Cette classe, qui appelle une mise en œuvre deWebApplicationInitializer
. Vous avez juste besoin de fournir une classe de la mettre en œuvre dans votre classpath (le code suivant est tiré de la doc ci-dessus).Pour le
web.xml
chose, mais vous devez configurer l'application web à l'aide de@Configuration
,@EnableWebMvc
etc..Spring
, parce que le Printemps donne déjà le fichier de référencesSpringServletContainerInitializer
qui feront appel à votreFooInitializer
classe. J'ai expliqué laMETA-INF/
, afin de comprendre comment elle fonctionne sous le capot. (J'ai édité la réponse ci-dessus, parce que c'était peut-être pas clair)Oui, vous n'avez pas besoin
web.xml
de démarrage de votre webapp Servlet 3.0+. Comme Alex a déjà mentionné, vous pouvez mettre en œuvreWebApplicationInitializer
classe et substitueronStartup()
méthode.WebApplicationInitializer
est une interface fournie par Spring MVC qui permet la mise en œuvre est détecté automatiquement et utilisé pour initialiser une Servlet 3 conteneur.L'ajout de cette réponse juste pour ajouter une autre façon. Vous n'avez pas besoin de mettre en œuvre
WebApplicationInitializer
. Une classe de base abstraite de la mise en œuvre deWebApplicationInitializer
nomméAbstractDispatcherServletInitializer
rend encore plus facile d'enregistrer la DispatcherServlet simplement en remplacement des méthodes pour spécifier le mappage des servlets et l'emplacement de la DispatcherServlet de configuration -