Spring 4.3 对原有的 @RequestMapping 注解进行了增强,引入了一系列 语义更清晰、更简洁 的快捷变种注解:


🔧 一、@RequestMapping 的变种注解

快捷注解对应 HTTP 方法
@GetMappingGET
@PostMappingPOST
@PutMappingPUT
@DeleteMappingDELETE
@PatchMappingPATCH

✅ 这些注解都继承自 @RequestMapping,底层逻辑完全一致,只是语义更明确、代码更简洁。


📌 二、基本语法示例

@RestController
@RequestMapping("/users")
public class UserController {

    // GET /users
    @GetMapping
    public List<User> listUsers() {
        return userService.findAll();
    }

    // GET /users/{id}
    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.findById(id);
    }

    // POST /users
    @PostMapping
    public User createUser(@RequestBody User user) {
        return userService.save(user);
    }

    // PUT /users/{id}
    @PutMapping("/{id}")
    public User updateUser(@PathVariable Long id, @RequestBody User user) {
        return userService.update(id, user);
    }

    // DELETE /users/{id}
    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.delete(id);
    }

    // PATCH /users/{id}
    @PatchMapping("/{id}")
    public User patchUser(@PathVariable Long id, @RequestBody Map<String, Object> updates) {
        return userService.partialUpdate(id, updates);
    }
}

🔍 三、注解参数支持(与 @RequestMapping 相同)

这些快捷注解都支持以下常用参数:

参数说明示例
value请求路径@GetMapping("/list")
path同 value,语义更清晰@PostMapping(path="/save")
produces返回类型(MIME)produces="application/json"
consumes接收类型consumes="application/json"
headers限制请求头headers="key=value"
params限制参数params="type=admin"

✨ 四、使用优势

✅ 简洁:比传统 @RequestMapping(method=...) 更清爽
✅ 语义明确:让代码意图更清晰(特别是 REST 风格 API)
✅ 更易维护:阅读、查错、调试都更方便


🧠 五、对比传统写法

✅ 快捷写法(推荐):

@GetMapping("/users")
public List<User> list() {}

🧾 传统写法(繁琐):

@RequestMapping(value="/users", method=RequestMethod.GET)
public List<User> list() {}

🧩 六、兼容性

  • Spring 4.3 起新增,Spring Boot 1.4 起默认支持。
  • 向下兼容 @RequestMapping,可以混用。

如果你正在构建 RESTful 接口,强烈建议统一使用这些变种注解,能让接口风格更规范、代码更现代。

需要我提供一个完整的 CRUD 示例项目(含 Spring Boot + JPA)来演示这些注解的使用吗?只需说一声~