Использование Джексона Миксинса с MappingJacksonHttpMessageConverter и Spring MVC
Я сразу же перейду к своему настоящему вопросу / проблеме,is there any way to access annotations on the controller's handler method inside of a HttpMessageConverter? Я почти уверен, что ответ отрицательный (после просмотра исходного кода Spring).
Есть ли другой способ использоватьДжексон Миксинс в паре при использованииMappingJacksonHttpMessageConverter? Я уже реализовал свой собственный HttpMessageConverter, основанный на MappingJacksonHttpMessageConverter, для «обновления». это использовать Джексон 2.0.
Controller.class
@Controller
public class Controller {
@JsonFilter({ @JsonMixin(target=MyTargetObject.class, mixin=MyTargetMixin.class) })
@RequestMapping(value="/my-rest/{id}/my-obj", method=RequestMethod.GET, produces="application/json")
public @ResponseBody List<MyTargetObject> getListOfFoo(@PathVariable("id") Integer id) {
return MyServiceImpl.getInstance().getBarObj(id).getFoos();
}
}
@JsonFilter
это пользовательская аннотация, которую я хочу передать мапперу, который затем может автоматически подаваться непосредственно в ObjectMapper.
MappingJacksonHttpMessageConverter.class
public class MappingJacksonHttpMessageConverter extends AbstractHttpMessageConverter<Object> {
...
@Override
protected void writeInternal(Object object, HttpOutputMessage outputMessage) {
//Obviously, no access to the HandlerMethod here.
}
...
}
Я искал этот ответ повсюду. До сих пор я видел только, как люди сериализуют свой объект в JSON внутри метода обработки контроллера (нарушаяСУХОЙ принцип неоднократно в каждом методе). Или аннотируйте их объекты данных напрямую (без разделения или множественных конфигураций того, как выставлять ваши объекты).
Может случиться так, что это не может быть сделано в HttpMessageConverter. Есть ли другие варианты? Перехватчики предоставляют доступ к HandlerMethod, но не к возвращенному объекту метода-обработчика.