Регистратор MappingJackson2HttpMessageConverter в Spring 3.1.2 с аннотациями JAXB

У меня есть несколько сущностей с аннотациями JAXB, которые я хотел бы преобразовать в JSON с помощью конвертера сообщений.

Я знаю, что мой ObjectMapper, который читает аннотации JAXB, работает:

String correctJsonText = jacksonObjectMapper.writeValueAsString(entityWithJAXB); 

Но когда я вызываю службу отдыха, зарегистрированный по умолчанию MappingJacksonHttpMessageConverter (который не настроен для чтения JAXB), кажется, вступает во владение - приводя к переполнению стека из-за циклических ссылок, когда @XmlTransient игнорируется ...

Как настроить Spring для использования MappingJackson2HttpMessageConverter?

Текущая конфигурация


    
        
            
            
                
                    
                        
                        
                        
                    
                
            

        
    





    

ОТДЫХ

@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);
}

зависимости


    com.fasterxml.jackson.core
    jackson-core
    2.0.5


    com.fasterxml.jackson.core
    jackson-databind
    2.0.5


    com.fasterxml.jackson.module
    jackson-module-jaxb-annotations
    2.0.5

ОБНОВЛЕНИЕ / Решение

Отладив мой контекст, я увидел, что конфигурация в не имел никакого эффекта.

Оказалось, что мой модульный тест с MockMcv всегда загружал дескрипторы дескрипторов по умолчанию, таким образом игнорируя мой собственный объектный сопоставитель. Из-за удобства я только протестировал контроллер, используя тест junit, так как он попал в контроллер просто отлично, я не думал об этом как о вероятной причине ошибки ...

Я еще не нашел исправления для своего теста, но когда я звоню в службу с помощью curl, все работает!

ОБНОВЛЕНИЕ / Окончательное решение

Только что нашел решение для моей тестовой установки; при использовании MockMvc (spring-test-mvc) вы должны явно указать пользовательские конвертеры сообщений:

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());
}

Единственная оставшаяся проблема заключается в том, чтоjacksonMessageConverter Можно'не может быть подключен напрямую до тех пор, пока не будет разрешена следующая JIRA:https://jira.springsource.org/browse/SPR-9469, До этого я только что создал копию jacksonMessageConverter в моем тестовом контексте.

Ответы на вопрос(1)

Ваш ответ на вопрос