2012-09-02 13 views
5

Ok Spring Gurus ... rompe esto para mí. Durante la lectura de la documentación sobre Spring MVC, me leva correo a través de esta declaración:Spring DispatcherServlet Varias instancias

" .... casos applicationContext en primavera pueden ser tag En el marco MVC web, cada uno tiene su propia DispatcherServlet WebApplicationContext, que hereda todos. los beans ya definidos en la raíz WebApplicationContext. Estos beans heredados definidos pueden anularse en el ámbito específico del servlet, y los nuevos beans específicos del ámbito se pueden definir localmente para una instancia de servlet determinada. "

Spring Docs Reference

tengo unas pocas preguntas con base en esto:

  1. La declaración implica que no puede haber más de una instancia de DispatcherServlet. ¿Eso no es totalmente cierto porque en una aplicación web solo puede existir (y debería existir) una instancia de un Servlet?
  2. ¿Qué significa exactamente "ámbito específico del servlet" en el contexto de la declaración anterior?

Respuesta

2

Es que no es totalmente cierto NO

Esto se traduce en "ocasionalmente verdadera", que no creo que es lo que quería decir.

en una aplicación web, sólo una instancia de un servlet puede (y debe idealmente) existe

Esto no es totalmente incorrecto - sólo en su mayoría incorrecto. Está confundiendo el elemento <servlet> del descriptor de implementación (web.xml) con la clase que implementa ese servlet.

Es cierto que, excepto en algunos casos limitados, el contenedor solo permite instanciar una instancia de la clase por servlet. Sin embargo, puede tener múltiples entradas <servlet> que especifiquen la misma clase.

¿Qué significa exactamente "ámbito en servlet específico" significa en el contexto de la declaración anterior

Como no muy buen ejemplo (de hecho, creo que hay algunos buenos ejemplos): se podría tener una aplicación que admita varios clientes, cada uno de los cuales tiene diferentes URL y diferentes bases de datos, pero que son idénticos. Puede definir sus objetos comerciales en la configuración raíz y el origen de datos en la configuración de la aplicación web. Además de los beans de configuración específicos del cliente.

+0

Corregí mi error con 'no' como señaló anteriormente, gracias. De todos modos, buena explicación. Creo que eso aclara mucho. Sin embargo, aún me estoy preguntando por qué querrías tener múltiples servlets similares en una sola aplicación web, solo para manejar solicitudes mapeadas de manera diferente. ¿Por qué no tener diferentes aplicaciones web, cada una teniendo una ruta de contexto diferente? ¿No sería el caso anterior (múltiples servlets similares en una sola aplicación web para manejar diferentes URL) simplemente una receta para un dolor de cabeza serio? – mainas

Cuestiones relacionadas