2011-01-10 8 views
5

Estoy escribiendo un servicio web RESTful utilizando JAXB y Spring MVC. En el contexto de Spring se ocupa de muchas cosas útiles para mí, pero registra su propio Marshaller JAXB y no puedo encontrar una manera de agregarle propiedades (como NamespacePrefixMapper o la ubicación del esquema).Cómo puedo configurar el Jaxb2Marshaller utilizado por mvc: anotado por anotación

¿Hay alguna manera de anular el marcador predeterminado configurado en o establecer propiedades en él?

Respuesta

1

<mvc:annotation-driven> es esencialmente un "macro" que registra un grupo de opciones de configuración fija. Puedes ver lo que hace en la fuente de la clase AnnotationDrivenBeanDefinitionParser bastante densa.

De particular interés aquí es que registra un AnnotationMethodHandlerAdapter e inyecta toda una serie de componentes, algunos de los cuales necesitará, muchos de los cuales no.

<mvc:annotation-driven> no ofrece mucho en el camino de la personalización, por lo tanto, si desea cambiar lo que hace, debe eliminarlo de su contexto y declarar su propio AnnotationMethodHandlerAdapter, configurado de la manera que desee.

El marcador JAXB se inyecta en la propiedad messageConverters de AnnotationMethodHandlerAdapter.

+0

Estoy un poco decepcionado de que este sea el caso. Puede configurar su propio servicio de conversión, pero no puede configurar su mensajeConvertidores? – rjsang

+0

@Rob: Sí. Las macros '' no estaban muy bien pensadas, en mi opinión. – skaffman

Cuestiones relacionadas