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> {
@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.