🚀 在SpringBoot项目开发中,数据校验是一个不可或缺的环节。合理使用@Validated
注解可以让参数校验变得简单高效,避免在业务逻辑中编写大量的判断代码。本文将详细介绍如何在SpringBoot中优雅地使用@Validated
进行数据校验,让你的代码更加简洁、健壮。
🔍 为什么需要数据校验?
一、数据校验的意义
数据校验的重要性
没有数据校验时,开发者需要在业务逻辑中手动编写大量的判断代码,不仅繁琐且容易遗漏,导致系统出现安全隐患或异常。
数据校验解决的问题:
- 🚫 避免了 非法数据进入业务逻辑层
- ✅ 提高了 代码的可读性和可维护性
- 🔄 简化了 参数验证的流程
- 🔒 增强了 系统的安全性和稳定性
二、SpringBoot中的数据校验方案
SpringBoot提供了多种数据校验方案,主要包括:
- @Validated注解:Spring提供的校验注解,可以应用在类或方法上
- Bean Validation注 解:JSR-380规范定义的校验注解,如@NotNull、@Size等
- 自定义校验器:通过实现ConstraintValidator接口创建自定义校验规则
🛠️ @Validated注解的使用方法
一、基本配置
首先,需要在项目中添加相关依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
二、在Controller中使用@Validated
@RestController
@RequestMapping("/api/users")
@Validated // 类级别使用@Validated
public class UserController {
@PostMapping
public ResponseEntity<User> createUser(@Valid @RequestBody User user) {
// 业务逻辑
return ResponseEntity.ok(user);
}
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable @Min(1) Long id) {
// 业务逻辑
return ResponseEntity.ok(userService.findById(id));
}
@GetMapping("/search")
public ResponseEntity<List<User>> searchUsers(
@RequestParam @Size(min = 2, max = 50) String name,
@RequestParam @Min(0) @Max(100) Integer age) {
// 业务逻辑
return ResponseEntity.ok(userService.search(name, age));
}
}