Registrador MappingJackson2HttpMessageConverter en Spring 3.1.2 con anotaciones JAXB

Tengo un número de entidades con anotaciones JAXB que me gustaría convertir a JSON utilizando un convertidor de mensajes.

Sé que mi ObjectMapper que lee las anotaciones de JAXB funciona:

String correctJsonText = jacksonObjectMapper.writeValueAsString(entityWithJAXB); 

Pero cuando llamo a mi servicio de descanso, el MappingJacksonHttpMessageConverter registrado predeterminado (que no está configurado para leer JAXB) parece hacerse cargo, lo que resulta en un flujo de pila debido a referencias cíclicas cuando se ignora @XmlTransient ...

¿Cómo configuro Spring para usar MappingJackson2HttpMessageConverter?

Configuración actual

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="false">
        <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper" ref="jacksonObjectMapper" />
            <property name="supportedMediaTypes">
                <list>
                    <bean class="org.springframework.http.MediaType">
                        <constructor-arg index="0" value="application" />
                        <constructor-arg index="1" value="json" />
                        <constructor-arg index="2" value="UTF-8" />
                    </bean>
                </list>
            </property>

        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

<bean id="jaxbAnnotationInspector" class="com.fasterxml.jackson.module.jaxb.JaxbAnnotationIntrospector" />

<bean id="jacksonObjectMapper" class="com.fasterxml.jackson.databind.ObjectMapper">
    <property name="annotationIntrospector" ref="jaxbAnnotationInspector" />
</bean>

Servicio de descanso

@RequestMapping(value="/{id}", method=RequestMethod.GET, produces = "application/json;charset=UTF-8")
public @ResponseBody EntityWithJAXB readEntityWithJAXB(@PathVariable int id, Model model) {
    return entityService.getById(id);
}

Dependencias

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.0.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.0.5</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.module</groupId>
    <artifactId>jackson-module-jaxb-annotations</artifactId>
    <version>2.0.5</version>
</dependency>

ACTUALIZACIÓN / Solución

Al depurar mi contexto pude ver que la configuración en<mvc:annotation-driven> no tuvo efecto

Resultó que mi prueba de unidad con MockMcv siempre cargaba los adaptadores de manejador predeterminados, ignorando así mi Objectmapper personalizado. Debido a la conveniencia, solo probé el controlador utilizando la prueba junit, ya que golpeó el controlador muy bien, no pensé que esto fuera un error probable ...

Todavía no encontré una solución para mi prueba, pero cuando llamo al servicio usando curl, ¡todo funciona!

ACTUALIZACIÓN / Solución final

Acabo de encontrar una solución para mi configuración de prueba; al usar MockMvc (spring-test-mvc) debe especificar conversores de mensajes personalizados explícitos:

private MockMvc mockMvc;

@Autowired
private MappingJackson2HttpMessageConverter jacksonMessageConverter;

@Autowired
private RestController restController;

@Before
public void initMockMvc(){
    mockMvc = MockMvcBuilders.standaloneSetup(restController)
            .setMessageConverters(jacksonMessageConverter).build();
} 

@Test
public void testRestController() throws Exception{
    DefaultRequestBuilder requestBuilder = MockMvcRequestBuilders.get("/json/42");
    this.mockMvc.perform(requestBuilder).andDo(print()).andExpect(status().isOk());
}

El único problema que queda es que eljacksonMessageConverter no se puede conectar directamente hasta que se resuelva el siguiente JIRA:https://jira.springsource.org/browse/SPR-9469. Hasta entonces, acabo de crear una copia del jacksonMessageConverter en mi contexto de prueba.

Respuestas a la pregunta(1)

Su respuesta a la pregunta