Pregunta

Estoy migrando desde la primavera 2,5 a 3. primavera

Se han introducido <mvc:annotation-driven /> lo que hace un poco de magia negro. Esto se espera que sea declarado en el archivo de configuración del servlet solamente.

etiquetas <context:annotation-config /> y <context:component-scan base='...'/> En primavera 2,5 acabo utilizados declarados tanto en application-context.xml y el despachador XML de configuración de servlet con paquetes de bases apropiadas para escanear.

Así que me pregunto ¿cuál es la diferencia entre las etiquetas y mvc:annotation-driven context:annotation-config en config servlet y lo que puedo eliminar en la primavera de 3 archivos de configuración?

¿Fue útil?

Solución

<context:annotation-config> declara apoyo para las anotaciones generales tales como @Required, @Autowired, @PostConstruct, y así sucesivamente.

<mvc:annotation-driven /> declara apoyo explícito para los controladores de MVC anotación impulsado (es decir @RequestMapping, @Controller, aunque el soporte para aquellos es el comportamiento por defecto), así como la adición de soporte para la validación declarativa través @Valid y el mensaje de clasificación cuerpo con @RequestBody / ResponseBody.

Otros consejos

También hay algunos detalles más sobre el uso de <mvc:annotation-driven /> en el docs Spring . En pocas palabras, <mvc:annotation-driven /> le da un mayor control sobre el funcionamiento interno de Spring MVC. No es necesario usarlo a menos que necesite una o más de las características descritas en la sección antes mencionada de los docs.

Además, hay otras etiquetas "anotación impulsada" disponibles para proporcionar funcionalidad adicional en otros módulos de la primavera. Por ejemplo, <transaction:annotation-driven /> permite el uso de la anotación @Transaction, se requiere <task:annotation-driven /> para @Scheduled et al ...

mvc: anotación impulsada es una etiqueta añadida en la primavera de 3,0 que hace lo siguiente:

  1. configura el resorte 3 Tipo ConversionService (alternativa a PropertyEditors)
  2. Añade soporte para el formato de los campos numéricos con @NumberFormat
  3. Añade soporte para el formato de fecha, calendario, y los campos Joda Time con @DateTimeFormat, si Joda El tiempo está en la ruta de clase
  4. Añade soporte para la validación de las entradas @Controller con @Valid, si un proveedor de JSR-303 está en la ruta de clase
  5. Añade soporte para el soporte para leer y escribir XML, si JAXB está en la ruta de clase (HTTP conversión de mensajes con RequestBody @ / @ responseBody)
  6. Añade soporte para la lectura y la escritura JSON, si Jackson es o n la ruta de clase (en la misma línea como # 5)

Contexto: anotación-config Las apariencias para las anotaciones en los granos en el mismo contexto de aplicación que se define y declara apoyo a todas las anotaciones generales como @Autowired, @Resource, @Required, @PostConstruct, etc, etc

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top