I have several controllers that return the same generic Response object with @ResponseBody annotation, like this:
@RequestMapping(value = \"/status\", method
In the end I implemented ResponseBodyAdvice like this:
@ControllerAdvice
public class StatusAdvice implements ResponseBodyAdvice<Response<?>> {
@Override
public boolean supports(MethodParameter returnType,
Class<? extends HttpMessageConverter<?>> converterType) {
if (returnTypeIsReponseVM(returnType)&&responseConverterIsJackson2(converterType)){
return true;
}
return false;
}
....
@Override
public Response<?> beforeBodyWrite(Response<?> body, MethodParameter returnType,
MediaType selectedContentType,
Class<? extends HttpMessageConverter<?>> selectedConverterType,
ServerHttpRequest request, ServerHttpResponse response) {
....
return body;
}
}
So it was easier then expected.