Spring MVC 中的 `@ResponseStatus` 注解有什么作用?

推荐答案

@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. 示例代码

在控制器方法中使用

-- -------------------- ---- -------
---------------
------ ----- ------------ -

    -----------------------------
    ------------------------------
    ------ ------ ------------------------- ------ --- -
        -- ----
        ------ --------- -------
    -

    -------------------------
    -----------------------------------
    ------ ---- --------------------------- -------- --------- -
        -- ----
    -
-

在异常类中使用

4. 注意事项

  • @ResponseStatus 用于异常类时,Spring 会自动捕获该异常并返回指定的状态码和原因短语。
  • 如果同时使用了 @ResponseStatus@ExceptionHandler@ExceptionHandler 的优先级更高。
  • reason 属性是可选的,如果不指定,Spring 会使用默认的原因短语。
纠错
反馈