@ResponseStatus注解起什么作用呢?

欣喜 Spring 发布时间:2025-03-31 11:31:12 阅读数:6473 1
下文笔者讲述@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响应状态码设置
    适用于控制器方法的成功响应或异常类的错误响应
	它能够提高代码的可读性和开发效率,
    同时减少手动设置响应状态码的工作量
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202503/8418.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者