@putmapping是spring mvc中用于映射http put请求的注解,本质为@requestmapping(method = requestmethod.put)的语义化快捷写法,专用于全量更新资源,需配合@pathvariable、@requestbody及状态码规范使用。

@PutMapping 是 Spring MVC 提供的注解,用于将 HTTP PUT 请求映射到控制器方法,常用于更新资源。它本质是 @RequestMapping(method = RequestMethod.PUT) 的快捷写法,语义更清晰、代码更简洁。
基本用法:绑定路径和接收数据
最常见场景是根据 ID 更新某个实体。需注意 PUT 通常要求客户端发送完整资源(即“全量更新”),服务端直接替换目标资源。
- 在控制器类上加
@RestController或@Controller + @ResponseBody - 方法参数可用
@PathVariable获取 URL 中的 ID,用@RequestBody接收 JSON 数据 - 返回值一般为更新后的对象或
ResponseEntity表示状态
@PutMapping("/users/{id}")
public ResponseEntity<user> updateUser(@PathVariable Long id, @RequestBody User user) {
User updated = userService.updateById(id, user);
return ResponseEntity.ok(updated);
}</user>
处理部分更新(PATCH 风格)
严格来说,PUT 应该是全量更新;若需支持字段级修改(如只改邮箱),建议用 @PatchMapping。但若必须用 PUT 实现部分更新,可在方法中做空值判断或使用 BeanUtils.copyProperties 跳过 null 字段。
- 接收时可加
@RequestBody(required = false),允许空体 - 查出原对象后,仅对非 null 字段赋值,再保存
- 避免直接用
@RequestBody全量覆盖,否则可能误清空字段
路径变量与请求体校验
PUT 请求常需确保路径 ID 和请求体中的 ID 一致(防止越权操作),同时对数据做合法性检查。
- 用
@Valid注解触发 Bean Validation(如@NotNull、@Email) - 方法参数加
@RequestBody @Valid User user,配合BindingResult捕获错误 - 手动比对
@PathVariable("id")和user.getId(),不一致则返回 400
返回状态码与响应头
符合 REST 规范的 PUT 接口应返回合适的 HTTP 状态码:
- 成功更新 →
200 OK(返回资源)或204 No Content(无响应体) - 资源不存在 →
404 Not Found - 数据校验失败 →
400 Bad Request - 使用
ResponseEntity.status(HttpStatus.XXX).body(...)精确控制
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











