Spring 面试题
目录

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

· 约 3 分钟读完 · 第 88 / 130 章

推荐答案

@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 会使用默认的原因短语。