@getmapping和@postmapping是spring 4.3引入的语义化注解,分别等价于@requestmapping(method = requestmethod.get/post),专用于精准匹配get/post请求,提升代码可读性与维护性。

@GetMapping 和 @PostMapping 是 Spring 4.3 起引入的语义化注解,本质是 @RequestMapping 的快捷写法,分别专用于处理 GET 和 POST 请求。它们让代码更清晰、意图更明确,也避免手动指定 method = RequestMethod.GET/POST 的冗余。
@GetMapping:精准匹配 GET 请求
它等价于 @RequestMapping(method = RequestMethod.GET),只响应浏览器地址栏访问、超链接跳转、表单 method="get" 等标准 GET 方式。
- 路径可直接写在注解值中,如
@GetMapping("/login") - 支持类级前缀:若控制器类加了
@RequestMapping("/api"),方法上的@GetMapping("users")就实际映射到/api/users - 可配合
@RequestParam获取查询参数,例如:@GetMapping("/search") public String search(@RequestParam String keyword) { ... }
@PostMapping:严格限定 POST 请求入口
它等价于 @RequestMapping(method = RequestMethod.POST),只接受表单提交(method="post")、AJAX POST、curl 命令等非幂等操作,天然适合接收表单数据、JSON 提交或文件上传。
- 不响应浏览器直接输入 URL 的行为(那是 GET),能有效防止重复提交误触发
- 常与
@RequestBody配合接收 JSON 数据,或与@ModelAttribute/@RequestParam绑定表单字段 - 示例:
@PostMapping("/submit") public String handleForm(@Valid User user, BindingResult result) { ... }
常见搭配与注意事项
这两个注解不能互换使用,HTTP 方法不匹配会导致 405 Method Not Allowed 错误。实际开发中需注意:
- 前端表单的
method属性必须与后端注解一致,GET 表单配@GetMapping,POST 表单配@PostMapping - 若需同时支持多个路径(如
/user和/users),@GetMapping支持数组写法:@GetMapping({"/user", "/users"}) - 它们本身不处理请求体解析或视图渲染逻辑,仍需配合
@Controller(返回视图)或@RestController(返回 JSON)使用
对比传统 @RequestMapping 的优势
用 @GetMapping("/home") 比 @RequestMapping(value = "/home", method = RequestMethod.GET) 更简洁,且一眼可知该方法用途;IDE 和文档工具也能更好识别语义,提升协作效率和可维护性。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











