데이터 검증 (Validation)
Spring에서의 데이터 검증(Validation)은 여러 계층에 거쳐서 발생한다. 여기서, 가장 기본적인 검증 방법은 Bean Validation이다.
@RestController
@AllArgsConstructor
public class BookController {
private BookService bookService;
@PostMapping("/books")
public void save(@RequestBody @Valid AddBookRequestDto addBookRequestDto, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
bindingResult.getAllErrors()
.forEach(objectError->{
System.err.println("code : " + objectError.getCode());
System.err.println("defaultMessage : " + objectError.getDefaultMessage());
System.err.println("objectName : " + objectError.getObjectName());
});
return;
}
bookService.save(addBookRequestDto.toEntity());
}
-> 여기서@Valid 어노테이션이 Request에 있는 방인된 객체(dto)의 유효성을 확인하고 유효하지 않은객체라면 BindingResult 파라미터에 들어가게 된다.
그렇다면, @PathVariable과 @RequestParam은 어떻게 유효성 검사를 진행할까?
클래스에 @Validated 어노테이션을 등록해 주면 된다.
@RestController @Validated public class UserController {
}