问题描述:
使用以下代码利用ResponseBodyAdvice来统一封装返回的数据
@RestControllerAdvice
public class ResponseAdvice implements ResponseBodyAdvice<Object> {
@Override
public boolean supports(@NotNull MethodParameter returnType, @NotNull Class<? extends HttpMessageConverter<?>> converterType) {
//按理来说不应该直接返回true
//现在也不知道该做什么判断,先这样吧
return true;
}
@Override
public Object beforeBodyWrite(Object body, @NotNull MethodParameter returnType, @NotNull MediaType selectedContentType, @NotNull Class<? extends HttpMessageConverter<?>> selectedConverterType, @NotNull ServerHttpRequest request, @NotNull ServerHttpResponse response) {
if(body instanceof ResponseMessage)
return body;
return ResponseUtil.success(body);
}
}
在一般情况下正常工作,但是当我在Controller返回String时会报错
原因分析:
追踪源码后发现问题主要出现在下面的代码中
for (HttpMessageConverter<?> converter :