Spring Boot 中 controller层注解常用方法详解

 更新时间:2025年10月29日 15:58:50   作者:克莱恩~莫雷蒂  
在 Spring Boot 中,@RestController 是一个用于处理 RESTful 风格请求的组合注解,它结合了 @Controller 和 @ResponseBody,使得返回的对象直接转换成 JSON 或 XML 格式,无需视图解析,本文重点介绍Spring Boot 中 controller层注解常用方法,感兴趣的朋友一起看看吧

总结:@RestController中的常用方法注解及其省略情况

在 Spring Boot 中,@RestController 是一个用于处理 RESTful 风格请求的组合注解,它结合了 @Controller@ResponseBody,使得返回的对象直接转换成 JSON 或 XML 格式,无需视图解析。它常用于 API 接口,尤其是处理 HTTP 请求时常用的方法注解如下:

1.@GetMapping

作用:处理 HTTP GET 请求,通常用于获取资源。

示例

@GetMapping("/greet")
public String greet() {
    return "Hello, World!";
}

省略情况

可以省略 @RequestParam:如果请求参数的名称与方法参数名称一致,@RequestParam 可以省略。

如果没有查询参数,也可以省略 @RequestParam 注解。

2.@PostMapping

作用:处理 HTTP POST 请求,通常用于创建资源。

示例

@PostMapping("/createUser")
public String createUser(@RequestBody User user) {
    return "User created: " + user.getName();
}

省略情况

@RequestBody 不能省略:在处理 POST 请求时,@RequestBody 用于将请求体数据映射到 Java 对象。

3.@PutMapping

作用:处理 HTTP PUT 请求,通常用于更新资源。

示例

@PutMapping("/updateUser/{id}")
public String updateUser(@PathVariable Long id, @RequestBody User user) {
    return "User with id " + id + " updated to: " + user.getName();
}

省略情况

@PathVariable@RequestBody 不能省略,除非你不需要从 URL 或请求体获取参数。

4.@DeleteMapping

作用:处理 HTTP DELETE 请求,通常用于删除资源。

示例

@DeleteMapping("/deleteUser/{id}")
public String deleteUser(@PathVariable Long id) {
    return "User with id " + id + " deleted";
}

省略情况

@PathVariable 不能省略,如果 URL 路径中有动态参数。

5.@PatchMapping

作用:处理 HTTP PATCH 请求,通常用于部分更新资源。

示例

@PatchMapping("/updateUser/{id}")
public String patchUser(@PathVariable Long id, @RequestBody User user) {
    return "User with id " + id + " partially updated to: " + user.getName();
}

省略情况

@PathVariable@RequestBody 不能省略,除非请求中没有对应的路径或请求体。

6.@RequestMapping

作用:通用注解,用于处理所有 HTTP 请求类型(如 GET、POST、PUT、DELETE 等),可以指定 method 属性限制特定的 HTTP 方法。

示例

@RequestMapping(value = "/greet", method = RequestMethod.GET)
public String greet() {
    return "Hello, World!";
}

省略情况

使用更具体的注解(如 @GetMapping@PostMapping 等)时,@RequestMapping 可以省略。

7.@RequestParam

作用:获取 HTTP 请求中的查询参数。

示例

@GetMapping("/greet")
public String greet(@RequestParam String name) {
    return "Hello, " + name;
}

省略情况

可以省略:如果查询参数的名称与方法参数名称一致,Spring 会自动绑定查询参数到方法参数。

8.@PathVariable

作用:从 URL 路径中获取动态参数。

示例

@GetMapping("/greet/{name}")
public String greet(@PathVariable String name) {
    return "Hello, " + name;
}

省略情况

可以省略:如果方法参数的名称与 URL 路径变量名称一致,Spring 自动绑定。

9.@RequestBody

作用:将 HTTP 请求体中的数据映射为 Java 对象。

示例

@PostMapping("/createUser")
public String createUser(@RequestBody User user) {
    return "User created: " + user.getName();
}

省略情况

不能省略,如果方法需要从请求体中获取数据。

10.@ResponseBody

作用:指示 Spring 将方法的返回值直接写入 HTTP 响应体,而不是进行视图解析。

示例

@RestController
public class MyController {
    @GetMapping("/greet")
    @ResponseBody
    public String greet() {
        return "Hello, World!";
    }
}

省略情况

可以省略:在 @RestController 中,@ResponseBody 已隐式包含,不需要显式使用。

11.@Valid和@Validated

作用:用于验证请求体中的数据,通常与 @RequestBody 配合使用。

示例

@PostMapping("/createUser")
public String createUser(@RequestBody @Valid User user) {
    return "User created: " + user.getName();
}

省略情况

可以省略:如果不需要对请求体进行验证,@Valid@Validated 可以省略。

12.@ModelAttribute

作用:将 HTTP 请求中的参数绑定到 Java 对象。常用于表单提交或 GET 请求的查询参数。

示例

@PostMapping("/createUser")
public String createUser(@ModelAttribute User user) {
    return "User created: " + user.getName();
}

省略情况

可以省略:如果你直接使用 @RequestParam@RequestBody 来处理参数绑定。

小结:每种注解的省略情况

注解省略情况
@GetMapping查询参数与方法参数名称一致时,@RequestParam 可以省略。
@PostMapping不能省略 @RequestBody,除非不需要请求体数据。
@PutMapping不能省略 @PathVariable@RequestBody
@DeleteMapping不能省略 @PathVariable
@PatchMapping不能省略 @PathVariable@RequestBody
@RequestMapping使用更具体的注解(如 @GetMapping 等)时可以省略。
@RequestParam方法参数名称与查询参数名称一致时,可以省略。
@PathVariable方法参数名称与路径变量名称一致时,可以省略。
@RequestBody不能省略,用于绑定请求体中的数据。
@ResponseBody@RestController 中可以省略。
@Valid / @Validated不进行验证时可以省略。
@ModelAttribute可以省略,如果使用 @RequestParam@RequestBody

结论:

这些注解让 Spring Boot 中的 API 方法更具灵活性。合理使用它们并了解何时可以省略,能够让代码更加简洁、易于维护。

到此这篇关于Spring Boot 中 controller层注解常用方法详解的文章就介绍到这了,更多相关springboot controller层注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文弄懂fastjson

    一文弄懂fastjson

    fastjson 是一个java语言编写的高性能且功能完善的JSON库,本文主要介绍了fastjson的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-05-05
  • spring boot整合mybatis利用Mysql实现主键UUID的方法

    spring boot整合mybatis利用Mysql实现主键UUID的方法

    这篇文章主要给大家介绍了关于spring boot整合mybatis利用Mysql实现主键UUID的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-03-03
  • SpringBoot为何可以使用Jar包启动详解

    SpringBoot为何可以使用Jar包启动详解

    springboot jar包启动脚本,适用于快速启动,删除,重启,以及查看状态,下面这篇文章主要给大家介绍了关于SpringBoot为何可以使用Jar包启动的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • springboot更新配置Swagger3的一些小技巧

    springboot更新配置Swagger3的一些小技巧

    今天给大家分享springboot更新配置Swagger3的方法,大家需要注意Swagger3版本需要引入依赖,具体示例代码参考下本文
    2021-07-07
  • 如何用Java结合经纬度位置计算目标点的日出日落时间详解

    如何用Java结合经纬度位置计算目标点的日出日落时间详解

    这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友可以参考下
    2025-01-01
  • eclipse汉化及jdk安装环境配置超详细教程(Java安装教程)

    eclipse汉化及jdk安装环境配置超详细教程(Java安装教程)

    这篇文章主要介绍了eclipse汉化及jdk安装环境配置超详细教程(Java安装教程),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Maven本地存在jar包IDEA依旧爆红的完美解决方法

    Maven本地存在jar包IDEA依旧爆红的完美解决方法

    这篇文章主要介绍了Maven本地存在jar包IDEA依旧爆红的完美解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • Hibernate基于ThreadLocal管理Session过程解析

    Hibernate基于ThreadLocal管理Session过程解析

    这篇文章主要介绍了Hibernate基于ThreadLocal管理Session过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Java实现航空航班管理系统

    Java实现航空航班管理系统

    这篇文章主要为大家详细介绍了Java实现航空航班管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • 一文详解jvm中的引用类型

    一文详解jvm中的引用类型

    在Java中对象以引用来指向JVM的内存区块,这里我们总结了强引用、软引用、弱引用和假象引用(幽灵引用),下面这篇文章主要给大家介绍了关于jvm中引用类型的相关资料,需要的朋友可以参考下
    2024-04-04

最新评论