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请求和响应内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot Java循环依赖的解决方案

    Spring Boot Java循环依赖的解决方案

    本文详细介绍了循环依赖的概念、常见场景以及多种解决方法,包括SpringApplicationEvent事件驱动、@Lazy延迟加载、AOP切面和ObjectProvider等,同时,还提供了解决循环依赖的标准回答技巧和预防措施,感兴趣的朋跟随小编一起看看吧
    2025-12-12
  • java爬虫模拟登陆的实例详解

    java爬虫模拟登陆的实例详解

    在本篇文章里小编给大家分享的是一篇关于java爬虫模拟登陆的实例详解内容,有兴趣的朋友们可以参考学习下。
    2021-01-01
  • SpringBoot的两种启动方式原理解析(配置方案)

    SpringBoot的两种启动方式原理解析(配置方案)

    本文介绍了Spring Boot中两种启动方式,使用内置Tomcat启动和使用外置Tomcat部署,在使用内置Tomcat启动时,可以通过IDEA的main函数启动,也可以使用nohup命令在后台运行,这篇文章主要介绍了SpringBoot的两种启动方式原理 ,需要的朋友可以参考下
    2025-01-01
  • Java随机数的5种获得方法(非常详细!)

    Java随机数的5种获得方法(非常详细!)

    这篇文章主要给大家介绍了关于Java随机数的5种获得方法,在实际开发中产生随机数的使用是很普遍的,所以在程序中进行产生随机数操作很重要,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Java中线程的等待与唤醒_动力节点Java学院整理

    Java中线程的等待与唤醒_动力节点Java学院整理

    在Object.java中,定义了wait(), notify()和notifyAll()等接口。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。下面通过本文给大家介绍Java中线程的等待与唤醒知识,感兴趣的朋友一起看看吧
    2017-05-05
  • java实现英文词频统计(附带源码)

    java实现英文词频统计(附带源码)

    英文词频统计作为文本数据分析中的基础工作,广泛应用于自然语言处理、舆情分析、信息检索、文本挖掘以及数据可视化等领域,下面我们就来看看如何使用java实现英文词频统计吧
    2025-06-06
  • Java异步判断线程池所有任务是否执行完成的操作方法

    Java异步判断线程池所有任务是否执行完成的操作方法

    这篇文章主要介绍了Java异步判断线程池所有任务是否执行完成的方法,在这个示例中,我使用了传统的匿名内部类来创建Callable任务(同时也提供了Lambda表达式的注释),以便与各种Java版本兼容,需要的朋友可以参考下
    2024-07-07
  • Java8 CompletableFuture详解

    Java8 CompletableFuture详解

    这篇文章主要介绍了Java8 CompletableFuture详解,CompletableFuture extends Future提供了方法,一元操作符和促进异步性以及事件驱动编程模型,需要的朋友可以参考下
    2014-06-06
  • 关于java方法区详解

    关于java方法区详解

    这篇文章主要介绍了关于java方法区的使用解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-09-09
  • Java反射机制深入理解

    Java反射机制深入理解

    这篇文章主要介绍了Java反射机制深入理解的相关资料,希望通过本文大家能理解这部分内容,需要的朋友可以参考下
    2017-09-09

最新评论