常用注解

方法参数中的注解

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 {
   @Valid
   private List<Item> items;
}

 

 

posted @ 2025-12-23 09:30  小迷糊的指引  阅读(1)  评论(0)    收藏  举报