常用注解
方法参数中的注解
1、@RequestBody:将请求体中的JSON/XML格式数据自动反序列化为Java对象
@RequestBody必须与Content-Type: application/json配合使用。
@RestControllerpublicclassUserController {
@PostMapping("/user/save")
public ResponseEntity<String> saveUser(@RequestBody User user) {
// 自动将请求体中的JSON数据转换为User对象return ResponseEntity.ok("User saved");
}
}
2、@RequestParam:从URL的查询字符串(?key=value)中提取参数值
// 正确:参数名一致
@GetMapping("/search")
public String search(@RequestParam String query) { // 处理 ?query=keyword
}
// 错误:需显式声明
@GetMapping("/search")
public String search(String query) { // 报错:参数名不匹配
}
3、@PathVariable:从URL路径中的占位符(如 /user/{id})中提取动态部分
// 正确:显式声明
@GetMapping("/users/{id}")
public User getUser(@PathVariable Long id) { // 处理 /users/123
}
// 错误:需显式声明
@GetMapping("/users/{id}")
public User getUser(Long id) { // 报错:无法绑定路径参数
}
4、@Valid :是 Java Bean Validation 规范的核心注解,用于触发对象的字段级校验机制,确保数据符合预定义的约束规则。
触发字段级校验
在实体类的属性上添加校验注解(如空检查(@NotNull)、长度校验(@Size)、数值范围(@Min/@Max)、正则表达式(@Pattern))后,通过 @Valid 触发校验逻辑。
public class User {
@NotNull(message = "用户名不能为空")
private String username;
@Size(min = 6, max = 20, message = "密码长度需在6-20位之间")
private String password;
}
@PostMapping("/users")
public ResponseEntity<?> createUser(@Valid @RequestBody User user) {
// 自动校验 User 对象的字段
}
===================================================================================================
递归校验关联对象:支持嵌套对象的校验,如集合、数组或 Map 中的元素。
public class Order {

浙公网安备 33010602011771号