@ResponseStatus注解起什么作用呢?
下文笔者讲述@ResponseStatus注解的功能简介说明,如下所示
@ResponseStatus注解简介
`@ResponseStatus`是Spring框架中一个注解
用于定义控制器方法或异常类HTTP 响应状态码
它可以帮助开发者更方便地控制 HTTP 响应的状态码和响应体。
`@ResponseStatus` 注解主要作用和使用场景
主要作用
指定 HTTP 状态码:
可以为控制器方法
或
异常类指定一个特定HTTP 状态码
简化响应处理:
无需手动设置响应状态码,直接通过注解实现
支持自定义原因短语:
除指定状态码外
还可以提供自定义的原因短语(可选)
`@ResponseStatus` 注解使用场景
1.在控制器方法上使用
当某个控制器方法执行成功时
可通过`@ResponseStatus`注解指定返回的 HTTP 状态码。
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class MyController {
@GetMapping("/success")
@ResponseStatus(HttpStatus.OK) // 指定返回状态码为 200
public String success() {
return "操作成功";
}
@GetMapping("/created")
@ResponseStatus(HttpStatus.CREATED) // 指定返回状态码为 201
public String created() {
return "资源已创建";
}
}
2.在异常类上使用
当抛出某个异常时
可通过`@ResponseStatus`注解
指定该异常对应HTTP状态码
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(value = HttpStatus.NOT_FOUND, reason = "资源未找到") // 指定状态码为 404
public class ResourceNotFoundException extends RuntimeException {
public ResourceNotFoundException(String message) {
super(message);
}
}
在控制器中抛出该异常时,
Spring 会自动将响应状态码设置为 404
并返回自定义的原因短语。
@GetMapping("/resource/{id}")
public String getResource(@PathVariable("id") Long id) {
if (id == null || id <= 0) {
throw new ResourceNotFoundException("ID 无效");
}
return "资源信息";
}
`@ResponseStatus` 注解属性
| 属性名 | 描述 | |----------|--------------------------------------------------------------| | `value` | 必须指定,表示 HTTP 状态码,类型为 `HttpStatus` 枚举值。 | | `reason` | 可选,表示自定义的原因短语,通常用于覆盖默认的状态码描述信息。 |
`@ResponseStatus` 注解注意事项
- 优先级问题:
如果同时使用`@ResponseStatus`和`ResponseEntity`
`ResponseEntity` 的优先级更高。
- 全局异常处理:
对于复杂的异常处理场景
建议结合`@ControllerAdvice`
和`@ExceptionHandler`使用
- 状态码选择:
根据业务逻辑选择合适HTTP 状态码
确保符合 RESTful 风格
========================================================
`@ResponseStatus` 注解可简化HTTP响应状态码设置
适用于控制器方法的成功响应或异常类的错误响应
它能够提高代码的可读性和开发效率,
同时减少手动设置响应状态码的工作量
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


