推荐答案
@ResponseStatus
注解用于在 Spring MVC 中自定义 HTTP 响应的状态码和原因短语。它通常用于控制器方法或异常类上,以便在方法执行成功或抛出异常时,返回指定的 HTTP 状态码。
本题详细解读
1. 使用场景
@ResponseStatus
注解可以在以下两种场景中使用:
控制器方法:当某个控制器方法成功执行后,可以通过
@ResponseStatus
注解返回指定的 HTTP 状态码,而不是默认的 200(OK)。异常类:当某个异常被抛出时,可以通过
@ResponseStatus
注解返回指定的 HTTP 状态码,从而提供更明确的错误信息。
2. 注解属性
@ResponseStatus
注解有两个主要属性:
value:指定 HTTP 状态码,类型为
HttpStatus
枚举。例如,HttpStatus.NOT_FOUND
表示 404 状态码。reason:可选属性,用于指定状态码的原因短语。例如,
reason = "Resource not found"
。
3. 示例代码
在控制器方法中使用
-- -------------------- ---- ------- --------------- ------ ----- ------------ - ----------------------------- ------------------------------ ------ ------ ------------------------- ------ --- - -- ---- ------ --------- ------- - ------------------------- ----------------------------------- ------ ---- --------------------------- -------- --------- - -- ---- - -
在异常类中使用
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "Resource not found") public class ResourceNotFoundException extends RuntimeException { // 异常逻辑 }
4. 注意事项
- 当
@ResponseStatus
用于异常类时,Spring 会自动捕获该异常并返回指定的状态码和原因短语。 - 如果同时使用了
@ResponseStatus
和@ExceptionHandler
,@ExceptionHandler
的优先级更高。 reason
属性是可选的,如果不指定,Spring 会使用默认的原因短语。