Performance: DTO validation
MEDIUM IMPACT
DTO validation affects server response time and user experience by adding processing before business logic executes.
@PostMapping("/users") public ResponseEntity<?> createUser(@Valid @RequestBody UserDTO userDTO, BindingResult result) { if (result.hasErrors()) { return ResponseEntity.badRequest().body(result.getAllErrors()); } userService.save(userDTO); return ResponseEntity.ok("User created"); } // UserDTO with annotations public class UserDTO { @NotBlank private String name; @Email private String email; // getters and setters }
public ResponseEntity<?> createUser(UserDTO userDTO) {
if (userDTO.getName() == null || userDTO.getName().isEmpty()) {
return ResponseEntity.badRequest().body("Name is required");
}
if (userDTO.getEmail() == null || !userDTO.getEmail().contains("@")) {
return ResponseEntity.badRequest().body("Valid email is required");
}
// more manual checks
userService.save(userDTO);
return ResponseEntity.ok("User created");
}| Pattern | CPU Usage | Response Delay | Code Maintainability | Verdict |
|---|---|---|---|---|
| Manual validation in controller | High (many checks) | Longer (blocking) | Low (repetitive code) | [X] Bad |
| Annotation-based validation with @Valid | Low (optimized) | Shorter (early fail) | High (clean, reusable) | [OK] Good |