Spring 启动(带有 spring MVC)在默认错误响应中停止发送正文(可能在版本更新后)



我有一个或多或少简单的 CRUD Spring MVC 应用程序,具有最少的业务逻辑。因此,我有点严重依赖默认异常处理,只需用@ResponseStatus注释我的异常类,以控制状态代码,只需几个@ExceptionHandler处理程序即可应对一些特殊情况。最近我注意到,在我依赖于默认处理的情况下,我的响应具有空正文,而不是以前包含来自异常的消息(自定义@ExceptionHandler正常工作)。

我尝试查看白标错误页面,但我能找到的只是自定义或禁用的操作方法,没有关于其错误配置或类似内容的内容。我怀疑这是由更新到较新的 spring 启动和/或 spring 云依赖项引起的,但在发行说明中找不到任何可以解释它的内容

我期待一个包含错误消息的 JSON,而不是当前完全空的正文。

@ControllerAdvice
public class ExceptionController {
@ExceptionHandler({Exception.class})
public ResponseEntity handler1(Exception e){
System.out.println("error occurred!");
ResponseStatus status = AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class);
HttpStatus res=null;
if(status!=null){
res=status.value()!=null?status.value():(status.code()!=null?status.code():null);
}
ResponseResult result = new ResponseResult();
result.setErrorCode(res!=null?res.value():500);
result.setMsg(e.getMessage());
return new ResponseEntity(result,res==null?HttpStatus.INTERNAL_SERVER_ERROR:res);
}
}
@Setter
@Getter
public class ResponseResult {
private String msg;
private int errorCode;
}

这样,它会返回包含错误 msg 的 JSON,并且 http 响应状态为 500 或您在 Exception 类上注释的状态。

最新更新