Springboot请求和响应相关注解及使用场景分析

 更新时间:2025年12月09日 11:26:56   作者:辞暮尔尔-烟火年年  
本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam、@PathVariable等请求处理注解,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

在Spring Boot中,请求和响应相关的注解主要用于处理HTTP请求和构建HTTP响应。以下是常用的请求和响应相关注解的详细介绍,包括使用场景和示例。

1. 请求处理注解

@RequestMapping

  • 描述: 用于映射HTTP请求到处理方法上。
  • 使用场景: 可以用于类级别和方法级别,适用于所有HTTP方法(GET, POST, PUT, DELETE等)。
  • 示例:
@RestController
@RequestMapping("/api")
public class MyController {
    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String sayHello() {
        return "Hello, World!";
    }
}

@GetMapping, @PostMapping, @PutMapping, @DeleteMapping, @PatchMapping

  • 描述: 这些是 @RequestMapping 的快捷形式,用于特定的HTTP方法。
  • 使用场景: 用于简化请求映射。
  • 示例:
@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, World!";
    }
    @PostMapping("/create")
    public String createItem(@RequestBody Item item) {
        return "Item created";
    }
}

@RequestParam

  • 描述: 用于将HTTP请求参数绑定到方法参数上。
  • 使用场景: 处理查询参数。
  • 示例:
@GetMapping("/greet")
public String greet(@RequestParam(name = "name", defaultValue = "World") String name) {
    return "Hello, " + name;
}

@PathVariable

  • 描述: 用于将URI模板变量绑定到方法参数上。
  • 使用场景: 处理路径参数。
  • 示例:
@GetMapping("/items/{id}")
public Item getItem(@PathVariable("id") Long id) {
    // Logic to fetch item by id
    return item;
}

@RequestBody

  • 描述: 用于将HTTP请求体绑定到方法参数上,并使用HttpMessageConverter进行反序列化。
  • 使用场景: 处理请求体中的JSON或XML数据。
  • 示例:
@PostMapping("/items")
public Item createItem(@RequestBody Item item) {
    // Logic to create item
    return item;
}

@RequestHeader

  • 描述: 将HTTP请求头中的某个值绑定到方法参数上。
  • 使用场景: 读取特定请求头信息。
  • 示例:
@GetMapping("/user-agent")
public String getUserAgent(@RequestHeader("User-Agent") String userAgent) {
    return "User-Agent: " + userAgent;
}

2. 响应处理注解

@ResponseBody

  • 描述: 将方法返回值绑定到HTTP响应体上,并使用HttpMessageConverter进行序列化。
  • 使用场景: 直接返回JSON或XML格式的数据。
  • 示例:
@GetMapping("/items/{id}")
@ResponseBody
public Item getItem(@PathVariable("id") Long id) {
    // Logic to fetch item by id
    return item;
}

@RestController

  • 描述: 组合注解,相当于@Controller和@ResponseBody的结合,所有方法默认返回JSON或XML格式的数据。
  • 使用场景: 用于标记RESTful控制器。
  • 示例:
@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/items/{id}")
    public Item getItem(@PathVariable("id") Long id) {
        return item;
    }
}

@ResponseStatus

  • 描述: 用于设置HTTP响应状态码。
  • 使用场景: 将特定的状态码返回到客户端。
  • 示例:
@PostMapping("/items")
@ResponseStatus(HttpStatus.CREATED)
public Item createItem(@RequestBody Item item) {
    return item;
}

3. 异常处理注解

@ExceptionHandler

  • 描述: 用于处理特定的异常,并返回自定义的响应。
  • 使用场景: 处理控制器中的异常。
  • 示例:
@RestController
@RequestMapping("/api")
public class MyController {
    @GetMapping("/items/{id}")
    public Item getItem(@PathVariable("id") Long id) {
        if (id == null) {
            throw new ItemNotFoundException("Item not found");
        }
        return item;
    }
    @ExceptionHandler(ItemNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public String handleItemNotFoundException(ItemNotFoundException ex) {
        return ex.getMessage();
    }
}

4. CORS支持

@CrossOrigin

  • 描述: 用于启用跨域资源共享(CORS)。
  • 使用场景: 允许跨域请求。
  • 示例:
@RestController
@RequestMapping("/api")
@CrossOrigin(origins = "http://example.com")
public class MyController {
    @GetMapping("/items/{id}")
    public Item getItem(@PathVariable("id") Long id) {
        return item;
    }
}

5. 其他相关注解

@RequestAttribute

  • 描述: 将请求范围内的属性绑定到方法参数上。
  • 使用场景: 处理在请求处理过程中设置的属性。
  • 示例:
@GetMapping("/attributes")
public String getAttribute(@RequestAttribute("myAttribute") String myAttribute) {
    return "Attribute: " + myAttribute;
}

@Valid

  • 描述: 用于验证请求体中的对象。
  • 使用场景: 对输入数据进行验证。
  • 示例:
@PostMapping("/items")
public Item createItem(@Valid @RequestBody Item item) {
    return item;
}

这些注解为Spring Boot提供了强大的请求和响应处理能力,帮助开发者轻松创建RESTful风格的API。通过合理使用这些注解,可以使代码更加清晰和易于维护。

到此这篇关于Springboot请求和响应相关注解及使用场景的文章就介绍到这了,更多相关Springboot请求和响应内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot数据层测试事务回滚的实现流程

    SpringBoot数据层测试事务回滚的实现流程

    这篇文章主要介绍了SpringBoot数据层测试事务回滚的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2022-10-10
  • idea设置JVM运行参数的几种方式

    idea设置JVM运行参数的几种方式

    对JVM运行参数进行修改是JVM性能调优的重要手段,本文主要介绍了idea设置JVM运行参数的几种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Java 程序员掌握 Spring Boot非常有必要

    Java 程序员掌握 Spring Boot非常有必要

    本文带领大家一起来了解下 Spring Boot 到底是什么?包括springboot的诞生,springboot特征具有哪些优势,如何让开发变得更简单,带着这些问题一起通过本文学习下吧
    2021-06-06
  • Java多线程之并发编程的核心AQS详解

    Java多线程之并发编程的核心AQS详解

    AQS ( AbstractQueuedSynchronizer)是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,下面小编和大家来一起学习一下吧
    2021-09-09
  • 详解SpringMVC学习系列之国际化

    详解SpringMVC学习系列之国际化

    这篇文章主要介绍了详解SpringMVC学习系列之国际化,详细的介绍了关于浏览器,Session,Cookie,URL请求的国际化的实现,有兴趣的可以了解一下
    2017-07-07
  • java List中相同的数据合并到一起

    java List中相同的数据合并到一起

    这篇文章主要介绍了java List中相同的数据合并到一起,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 超级详细的Java安装教程(Mac版)

    超级详细的Java安装教程(Mac版)

    Java是一种广泛使用的编程语言,可用于开发各种类型的应用程序,这篇文章主要给大家介绍了关于Mac系统下Java安装的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Springboot启动报错Input length = 2的问题解决

    Springboot启动报错Input length = 2的问题解决

    最近使用Springboot启动报错,报错内容java.nio.charset.MalformedInputException: Input length = 2,下面就来介绍一下解决方法,感兴趣的可以了解一下
    2024-08-08
  • SpringBoot中获取配置文件的注解详解

    SpringBoot中获取配置文件的注解详解

    这篇文章主要介绍了SpringBoot中获取配置文件的注解详解, 一般情况下:如果我们只是在某个业务逻辑中需要获取一下配置文件中的某项值,使用@Value,如果我们使用JavaBean来与配置文件进行映射,我们直接使用@ConfigurationProperties,需要的朋友可以参考下
    2023-10-10
  • Java装饰者模式的深入了解

    Java装饰者模式的深入了解

    这篇文章主要为大家介绍了Java装饰者模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01

最新评论