Elim的博客

用来记录一些原创性的总结


Elim

SpringMVC之ResponseStatus

ResponseStatus是由SpringMVC提供的一个注解,可以标注在异常处理方法上,也可以标注在异常类上,用来指定在SpringMVC处理请求的过程中抛出了指定的异常时将响应给客户端的状态码和错误信息。比如我们希望在抛出了IllegalArgumentException时响应给客户端的状态码是502,错误信息是Hello Error,我们就可以像如下这样,在异常处理方法上加上@ResponseStatus注解,同时指定错误码和错误信息,此时的ResponseStatus注解将在ServletInvocableHandlerMethod的initResponseStatus方法中进行处理。

@ControllerAdvice(annotations=RestController.class)
public class MyExceptionHandler {
    
    @ExceptionHandler(IllegalArgumentException.class)
    @ResponseStatus(value=HttpStatus.BAD_GATEWAY, reason="Hello Error")
    public void handleIllegalArgumentException() {
        
    }
    
}

在没有使用异常处理器方法的情况下,如果异常类的源码是我们可以自己进行控制的,也可以在异常类上加上@ResponseStatus注解指定错误码和错误信息。此时的ResponseStatus注解将由ResponseStatusExceptionResolver进行处理。

@ResponseStatus(value=HttpStatus.BAD_GATEWAY, reason="Hello Error")
public class ResponseStatusException extends RuntimeException {

    /**
     * 
     */
    private static final long serialVersionUID = 6644585920167208469L;

}

(注:本文是基于Spring4.1.0所写)