2016-05-23 8 views
0

У меня возникли проблемы с Spring MVC 4.2.6 и Jackson (2.7.3). Я создал класс absctract @RestController с использованием метода, который использует общий тип. Я реализую этот абстрактный класс, передавая тип универсального объекта. Я использую @RequestBody и DispatcherServlet throws JsonMappingException (не могу создать экземпляр моего класса). Контекст MappingJackson2HttpMessageConverter в контексте приложения настроен.@RequestBody с общим типом

Редактировать: Дополнительная информация добавлена.

public abstract class AbsctractAnimalResource<DTO extends AnimalDTO> { 

    // Doesn't work. Throws JsonMappingException. (@RequestBody) 
    @RequestMapping(value = "/bar", method = POST, produces = APPLICATION_JSON_VALUE) 
    public ResponseEntity<?> bar(@RequestBody DTO dto) throws Exception { 
     return new ResponseEntity(dto, HttpStatus.CREATED); 
    } 

} 

@RestController 
@RequestMapping("/cat") 
public class CatResource extends AbsctractAnimalResource<CatDTO> { 

} 

@RestController 
@RequestMapping("/dog") 
public class DogResource extends AbsctractAnimalResource<DogDTO> { 

} 


interface AnimalDTO { } 
public class CatDTO implements AnimalDTO { } 
public class DogDTO implements AnimalDTO { } 
+0

Просьба указать [MCVE]. –

+0

Хорошо. Дополнительная информация добавлена. Благодарю. Я не могу понять, у меня есть debug DispatcherServlet, и две аннотации имеют такое же поведение, но @RequestBody генерирует исключение. – carf

ответ

0

После некоторых команд отладки в Spring 4.2.6 классов Я нашел этот комментарий:

https://github.com/spring-projects/spring-framework/blob/4.2.x/spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java#L51

Spring 4.2.x и 2.7.x Джексон не работают вместе. Я понизил мою версию Джексона до 2.6.6, и теперь все работает. Spring 4.3.X хорошо работает с Jackson 2.7+.

Смежные вопросы