2009-08-20 17 views
5

Soy nuevo en Spring MVC. Pero tenía cierta experiencia en trabajar con Struts 1.x. Me gustaría saber si es una práctica común personalizar DispatcherServlet mientras trabaja con Spring MVC, como las personas a veces personalizan ActionServlet o RequestProcessor en Struts 1.x?¿Es una práctica habitual la personalización de DispatcherServlet en Spring MVC?

O ampliemos la pregunta un poco. ¿Dónde están los puntos de entrada para que un veterano programador de Spring MVC personalice el marco de MVC?

Gracias.

+1

Por favor, ¿puedes aclarar a qué te refieres con personalizar? ¿Te refieres a especializar (como respondí) o configurar (como respondió adatapost)? –

+0

En realidad me refiero a ambos, ya que necesito toda la información sobre cómo extenderlo. Además, estoy de acuerdo con su punto. Extender DispatcherServlet y ser reemplazado mediante el uso de Filter o Controller. Sin embargo, de esta forma, Spring MVC no puede ofrecer una interfaz de conexión estándar para desarrolladores de complementos. En struts, algunos complementos se realizan extendiendo "RequestProcessor". –

+0

No estoy muy familiarizado con la arquitectura de plug-ins de Struts, pero diría que la API Spring MVC es bastante escueta.Es un poco mal llamado imho, ya que solo es realmente la parte del controlador del patrón MVC, lo que te deja definir tus puntos de vista y modelo según sea necesario (generalmente como JSP y POJO). –

Respuesta

3

Definitivamente es una buena práctica. Spring Framework - Web MVC framework

RESUMEN: Se puede personalizar de primavera DispatcherServlet añadiendo contexto parámetros .... especialmente útil cuando usted tiene una gran cantidad de funcionalidades comunes en un solo controlador.

+1

Gracias, es útil. –

1

¿Por qué querría especializarse en org.springframework.web.servlet.DispatcherServlet?

Cualquier solicitud de preprocesamiento puede/debe lograrse con un javax.servlet.Filter y el resto se debe a la implementación de org.springframework.web.servlet.mvc.Controller.

Alternativamente, vea respuesta de adatapost, que se refiere a la configuración del org.springframework.web.servlet.DispatcherServlet a través del archivo web.xml.

+0

Hago esta pregunta para que pueda entender mejor este marco y para ver de qué manera puede servir esto. :) –

+0

¿Por qué te gustaría especializar algo? Porque puede tener una necesidad que otra persona aún no tiene. Así que no puedo entender cómo esas respuestas pueden tener un voto positivo de todos modos. Si una clase tiene métodos "protegidos", que tiene DispatcherServlet, definitivamente significa que el desarrollador cree que puede haber una necesidad de anularla. Los desarrolladores de Grails ya han reemplazado a DispatcherServlet y para ellos los filtros no fueron suficientes para personalizar algunas funcionalidades. –

+0

Siempre existe la posibilidad de que puedas especializarte, pero la pregunta es si era común, cuál no, no lo es y normalmente hay mejores formas de lograr lo que necesitas, aunque esto no siempre es así. –

4

DispatcherServlet, al igual que la mayor parte de la API de la primavera, es en gran medida diseñada para la extensión. De hecho, si encuentra una parte que no es susceptible de subclases, presente un problema en su JIRA y es probable que lo solucionen (lo he hecho en varias ocasiones).

Dicho esto, la gran mayoría de la funcionalidad se puede lograr a través de la configuración de DispatcherServlet en lugar de la extensión de la misma.

+0

Tienes razón. Ni siquiera puedo nombrar una sola cosa que no se puede lograr mediante su implementación actual. Gracias por tu consejo. Archivaré un problema si encuentro la necesidad. –

1

Yo, por ejemplo, nunca he encontrado una razón para extender DispatcherServlet.

+1

Esto es bueno saberlo;) –

2

Aquí está mi sugerencia en la que estoy pensando que la extensión del servlet del despachador sería una 'solución'.

  1. validación separada, la conversión desde el controlador (por varias buenas razones)
  2. hacer que el controlador sólo un delegador a la capa de servicio.
  3. compilar/rellenar el objeto de dominio/solicitud completamente antes de que llegue al controlador.
+0

Si crees que es una buena manera, adelante e impleméntalo. Aunque hice esta pregunta en primer lugar, no encontré un caso en el que deba extender DispatcherServlet. –