Un standard de printemps de l'application web (créé par Roo ou "Spring MVC Projet" Template) créer un web.xml avec ContextLoaderListener
et DispatcherServlet
. Pourquoi n'ont-ils pas seulement utiliser l' DispatcherServlet
et le rendre à la charge de l'ensemble de la configuration?
Je comprends que le ContextLoaderListener doit être utilisé pour charger le matos qui n'est pas web pertinents et la DispatcherServlet est utilisé pour charger le web pertinentes de la substance (Contrôleurs,...). Et ce résultat dans deux contextes: un parent et un enfant de cadre.
Arrière-plan:
J'ai été le faisant de cette manière standard pour plusieurs années.
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:META-INF/spring/applicationContext*.xml</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Handles Spring requests -->
<servlet>
<servlet-name>roo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring/webmvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
Cela a souvent causé des problèmes avec les deux contextes et les dépendances entre eux. Dans le passé j'ai toujours été en mesure de trouver une solution, et j'ai le sentiment très fort que cela fait de la structure du logiciel/architecture de toujours mieux. Mais maintenant, je suis confronté à un problème avec les événements de ces deux contextes.
-- Cependant, cela me fait repenser à ce double contexte motif, et que je me pose: pourquoi devrais-je me résoudre à ce problème, pourquoi ne pas le chargement de tous les printemps les fichiers de configuration avec un DispatcherServlet
et la suppression de la ContextLoaderListener
complètement. (J'ai encore d'avoir des fichiers de configuration différents, mais un seul contexte.)
Est-il une raison de ne pas enlever l' ContextLoaderListener
?