@Override protected void beforeBodyWriteInternal(MappingJacksonValue bodyContainer, MediaType contentType, MethodParameter returnType, ServerHttpRequest request, ServerHttpResponse response) { int status = ((ServletServerHttpResponse) response).getServletResponse().getStatus(); response.setStatusCode(HttpStatus.OK); Map<String, Object> map = new LinkedHashMap<>(); map.put("status", status); map.put("message", bodyContainer.getValue()); bodyContainer.setValue(map); } }
@ControllerAdvice public class MyResponseBodyAdvice extends AbstractMappingJacksonResponseBodyAdvice { @Override public boolean supports(final MethodParameter returnType, final Class<? extends HttpMessageConverter<?>> converterType) { return super.supports(returnType, converterType) && null != returnType.getMethodAnnotation(ResponseBody.class); } @Override protected void beforeBodyWriteInternal(final MappingJacksonValue bodyContainer, final MediaType contentType, final MethodParameter returnType, final ServerHttpRequest request, final ServerHttpResponse response) { if (bodyContainer.getValue() instanceof ReturnLoginMessage) { //set some object as you like bodyContainer.setValue(); } } } }