De forma predeterminada, Spring registrará un BeanNameUrlHandlerMapping
y un DefaultAnnotationHandlerMapping
, sin ninguna configuración explícita requerida.
Si define sus propios beans HandlerMapping
, los valores predeterminados no se registrarán, y obtendrá los declarados explícitamente.
Hasta ahora, todo bien.
El problema surge cuando agrega <mvc:annotation-driven/>
a la mezcla. Este también declara su propio DefaultAnnotationHandlerMapping
, que reemplaza los valores predeterminados. Sin embargo, si también declaras el tuyo, terminas con dos. Dado que se les consulta por orden de declaración, esto generalmente significa que se llama primero al registrado por <mvc:annotation-driven/>
y se ignora el suyo.
Sería mejor si el DefaultAnnotationHandlerMapping
registrado por <mvc:annotation-driven/>
actuó como el predeterminado, es decir, si los declarados explícitamente tienen prioridad, pero esa no es la forma en que lo escribieron.
Mi preferencia actual es no usar <mvc:annotation-driven/>
en absoluto, es demasiado confuso e impredecible cuando se mezcla con otras opciones de configuración. Realmente no hace nada especialmente complejo, no es difícil ni detallado agregar explícitamente lo que hace por ti, y el resultado final es más fácil de seguir.
¿Tienes ' ' en alguna parte? –
skaffman
Sí, para activar el manejo de javax.validation (y tal vez un montón de otras cosas) – Bozho