29 votes

Spring MVC et Servlets 3.0 - Avez-vous encore besoin de web.xml?

Dans un typique Spring MVC, web app, vous pouvez déclarer la DispatcherServlet en 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>

Le long de 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 l' DispatcherServlet, c'est à dire. est-il un moyen de configurer votre plein Printemps application sans aucune xml?

39voto

Alex Points 9063

Avec JEE6, si votre application conteneur de Servlet 3.0 ce que vous devez faire est de:

  1. Créer une classe qui implémente ServletContainerInitializer (c - com.foo.FooServletContainer)
  2. Créer un fichier dans votre dossier META-INF/services le dossier nommé javax.servlet.ServletContainerInitializer qui va contenir le nom de votre mise en œuvre au-dessus de (com.foo.FooServletContainer)

Le 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 en META-INF/services. Cette classe, qui appelle une mise en œuvre de l' WebApplicationInitializer. 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).

public class FooInitializer implements WebApplicationInitializer {
    @Override
    public void onStartup(ServletContext servletContext) {
        WebApplicationContext appContext = ...;

        ServletRegistration.Dynamic dispatcher =
           container.addServlet("dispatcher", new DispatcherServlet(appContext));
        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
    }
 }

C'est tout pour l' web.xml chose, mais vous devez configurer l'application web à l'aide de @Configuration, @EnableWebMvc etc..

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X