Java面试题更新 2026-08-03

在 Spring MVC 应用中,@ResponseStatus 注解的主要用途是什么?请结合具体使用场景说明。

考察说明

考查对 Spring MVC 中 @ResponseStatus 注解作用及使用场景的理解。

回答思路

  1. 【回答框架 1】@ResponseStatus 注解用于标记控制器方法或异常类,指定 HTTP 响应的状态码和原因短语。当方法正常返回或异常被抛出时,Spring 会根据注解设置响应状态。
  2. 【回答框架 2】在控制器方法上使用时,可覆盖默认的 200 状态码,例如返回 201 Created 表示资源创建成功,或返回 204 No Content 表示无内容响应。
  3. 【回答框架 3】在异常类上使用时,当该异常被抛出且未被其他异常处理器处理时,Spring 会应用注解中定义的状态码和原因,将异常映射为对应的 HTTP 响应。
  4. 【回答框架 4】该注解通常用于简单场景,若需要动态状态码或复杂的错误响应体,应使用 @ExceptionHandler 或 @ControllerAdvice 进行更灵活的处理。
  5. 【关键点 1】@ResponseStatus 可作用于方法或异常类,用于指定 HTTP 状态码与 reason。
  6. 【关键点 2】作用于方法时,可改变正常响应的状态码,如 201、204。
  7. 【关键点 3】作用于异常类时,可将异常映射为特定的状态码,简化错误处理。
  8. 【关键点 4】复杂错误处理推荐使用 @ExceptionHandler 或 @ControllerAdvice。
  9. 【易错点 1】注意与 @ResponseBody 的区别:@ResponseStatus 仅设置状态码,不影响响应体内容。
  10. 【易错点 2】在异常类上使用 @ResponseStatus 时,若异常被 @ExceptionHandler 捕获,则注解不生效。
  11. 【易错点 3】避免滥用注解导致状态码语义不清,例如将 200 改为 201 时需确保语义正确。