Джексон объект сопоставителей миксин ломает ответ списка Springboot от контроллера - PullRequest
0 голосов
/ 28 июня 2019

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

@Bean
public ObjectMapper objectMapper(){
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.addMixin(Item.class, ItemMixin.class);
    return objectMapper;
}
@Bean
public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter(){
    MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(objectMapper());
    return mappingJackson2HttpMessageConverter;
}

Приложение - SpringBoot (я знаю, что springboot работает самостоятельносоздание экземпляров сообщений по умолчанию), но проблема в том, что когда я вызываю конечную точку, у которой есть список возвращенных элементов, я получаю 500, потому что строка:

objectMapper.addMixin(Item.class, ItemMixin.class);

как-то ломается, и я не понимаю, почему.

@GetMappring(.....)
public List<Item> getItems(){
    return Arrays.asList(new Item(1), new Item(2));
}

Я знаю, что по умолчанию контроллер весенней загрузки возвращает строку json, если ничего не указано. Код упрощен для лучшей читаемости.

1 Ответ

0 голосов
/ 09 июля 2019

Оказывается, что если один из пользовательских сериализаторов, которые используются миксином, случайно выбрасывает исключение в переопределенном методе сериализации, то это исключение вызывает этот неприятный HTTP 500 при вызове открытой конечной точки Rest. Любопытно, что сообщение не так заметно и понятно для интерпретации.

...