实体类中参数校验
明白了。如果你想要在实体类自身中定义校验逻辑并在不满足条件时抛出异常,可以这么做:
1. **在实体类中定义检验方法**:
public class UserRequest {
private String username;
private int age;
// ... 其他字段和getter/setter
public void validate() {
if (username == null || username.isEmpty()) {
throw new IllegalArgumentException("用户名不能为空");
}
if (age <= 0) {
throw new IllegalArgumentException("年龄必须大于0");
}
// ... 其他校验逻辑
}
}
- 在服务层调用实体类的校验方法:
@Service
public class UserService {
public void createUser(UserRequest userRequest) {
userRequest.validate();
// ... 保存或处理用户的逻辑
}
}
- 在Controller层捕获并处理异常:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/")
public ResponseEntity<String> createUser(@RequestBody UserRequest userRequest) {
try {
userService.createUser(userRequest);
return ResponseEntity.ok("User created successfully");
} catch (IllegalArgumentException ex) {
return ResponseEntity.badRequest().body(ex.getMessage());
}
}
}
这样,校验逻辑会被封装在实体类的validate方法中。在服务层,你可以直接调用这个方法来触发校验逻辑。如果校验不通过,方法会抛出异常,然后你可以在Controller层捕获并处理这些异常。
发表评论