2010-09-19 8 views
14

En primavera web MVC¿Podemos cambiar el nombre de archivo de configuración de contexto de DispatcherServlet?

1) Si definimos DispatcherServlet como a continuación

<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 

busca archivo llamado appServlet-servlet.xml bajo WEB-INF carpeta como se ha mencionado en la referencia de la primavera.

Mi pregunta es ¿Podemos cambiar el nombre de archivo y ubicación busca? (? Creo que el uso de contexto o parámetros de inicialización que podemos hacer esto, cualquier organismo puede decirme qué es exactamente lo que debería ser)

2) En cada MVC primavera web web.xml, tendremos la línea de abajo:

<listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener> 

Aquí, mi pregunta es ¿qué archivos de contexto busca? (es este oyente del cargador de contexto que busca dispatcherservlet-servlet.xml?)

3) ¿Diferencia entre dispatcherservlet-servlet.xml y applicationcontext.xml? (Vi algunas personas examples..where están importando applicationcontext.xml en dispatcherservlet-servlet.xml?)

4) Por favor, dígame cuántos contextos podemos tener para la web de primavera y hay alguna convenciones de nomenclatura de este (como servlet despachador)?/

+0

Espero que el siguiente enlace pueda responder su pregunta. http://stackoverflow.com/questions/11815339/role-purpose-of-contextloaderlistener-in-spring – user2292029

Respuesta

19
  1. "El espacio de nombres también se puede establecer explícitamente a través del servlet init-param namespace". Se puede establecer cualquier camino que quiere allí, relativa a la raíz de contexto

  2. No, el ContextLoaderListener busca a applicationContext.xml (o para el archivo especificado por el context-param contextConfigLocation. Una vez más la ruta es relativa al contexto raíz. Normalmente coloco el mío en /WEB-INF/classes/applicationContext.xml, y lo configuro como un valor del parámetro contextual).

  3. El dispatcherServlet-servlet.xml es un contexto secundario al definido por applicationContext.xml. El contexto secundario puede acceder a los beans desde el contexto principal, pero lo contrario no es cierto. Imagine que tiene un contexto "web", con todos los controladores y elementos relacionados con la web, y un contexto "principal" con todo lo demás

  4. Es aconsejable tener el menor número posible de contextos (en aras de la simplicidad) . Pero puede definir múltiples servlets de despachador y, por lo tanto, tener múltiples contextos "secundarios".

+0

Bozho, gracias por su respuesta ... Todavía no estoy seguro con las dos primeras respuestas. (1) La pregunta es sobre el nombre del archivo de contexto del servlet del despachador y la ruta que busca. Por defecto, el archivo debe ser ' .xml' y debe estar en la carpeta' WEB-INF' ¿podemos cambiar estas reglas usando init param? (2) por lo que busca 'applicationcontext.xml', ¿podría describir también la ruta? – javanoob

+0

@javanoob - ver actualizado. puede establecer rutas relativas a la raíz de contexto. – Bozho

+0

** ContextLoaderListener ** accept 'classpath:/path/to/spring.xml' sintaxis para ** contextConfigLocation **. – gavenkoa

14

Mi pregunta es ¿Podemos cambiar el nombre de archivo y la ubicación que busca?

¿Se refiere a que desea utilizar un archivo que no es nombrado como appServlet.xml

copia-pegar de mvc-shocase/web.xml

<!-- Processes application requests --> 
<servlet> 
    <servlet-name>appServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
+0

Hola, gracias por tu respuesta ... La pregunta era si podemos cambiar el nombre de 'appServlet-servlet.xml' (lo mencionaste como' appServlet.xml') BTW..cómo supiste que me estaba refiriendo a eso ejemplo (mv-showcase) :)? – javanoob

0

1A) Sí, pero tenemos que pasar el INIT- param al DispatcherServlet con nombre y valor como "contextConfigLocation" y "ubicación de su archivo ur" respectivamente en DD o web.archivo xml

2A) Bozho ya respondió. [ContextLoaderListener] busca cargar los archivos xml contextuales proporcionados como contexto param-value mapeado al contexto param-name para el parámetro contextual. Buscar el "dispatcherservlet-servlet.xml" es un proceso predeterminado en Spring MVC. ContextLoaderListener no lo busca.

3A) Bozho ya respondió.

4A) Bozho ya respondió.

Cuestiones relacionadas