我已经使用Jackson / JSON对Spring REST进行了很好的设置,并且一切正常。
但是我故意在消息的结构中引入了一个错误,导致400-错误的请求。但是服务器上没有日志输出。我所期望的错误将是“杰克逊未知属性异常”之类的东西,但它被捕获,并且向客户端发送了400错误,但服务器上没有该异常的日志。
我不想明确调试服务器上的所有内容,但是我想要像这样的Spring网络级异常明确标记为错误。
开启此功能的正确方法是什么?
@ExceptionHandler @ResponseStatus(HttpStatus.BAD_REQUEST) public void handle(HttpMessageNotReadableException e) { logger.warn("Returning HTTP 400 Bad Request", e); }
你可以使用@ControllerAdvice(在Spring 3.2中引入)为所有控制器全局启用此功能。它确实需要一些代码,但是以我的经验,你通常最终还是需要全局错误处理配置,这使你可以设置断点/轻松检查问题。
@ControllerAdvice
下面是一个示例:
@ControllerAdvice public class ControllerConfig { @ExceptionHandler @ResponseStatus(HttpStatus.BAD_REQUEST) public void handle(HttpMessageNotReadableException e) { log.warn("Returning HTTP 400 Bad Request", e); throw e; } }