Validator이 필요한 이유
- 서버에서 들어온 Request Message가 서버에서 요구하는 스펙에 잘 맞게 들어왔는지 검사해야할 필요가 있음
- 하나씩 Request check를 할 수도 있지만 검사 코드가 너무나 길어질 수가 있음
- 이러한 상황을 방지하기 위해서 Validator을 사용
- 하나의 메소드는 하나의 일만 수행하고, 큰 단위의 모듈을 작은 단위의 모듈로 쪼개고 각각의 모듈의 응집도는 높이고 의존성은 낮게 validation 영역은 프레임워크에게 토스 하여 제어의 역전 흐름을 통해 비즈니스 로직을 더 가볍게 만든다.
Spring Validator
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-validation'
....
}
[출처] [Spring Boot] 스프링 Validator 유효성검사 핵심 초단간 정리(1편) (#스터디)|작성자 GG
@Data
public class TestVO {
@NotEmpty(message = "이름을 입력해주세요")
private String name;
private String email;
private String phoneNumber;
}
[출처] [Spring Boot] 스프링 Validator 유효성검사 핵심 초단간 정리(1편) (#스터디)|작성자 GG
- validation은 어노테이션 이름으로 대강의 역할을 알 수 있다.
ex) @NotEmpty : 비어있으면 안됨
@Email : 이메일 형식을 검증
@RestControllerAdvice
- @RestControllerAdvice를 사용하면 컨트롤러 예외처리를 받을 수 있다.
@ExceptionHandler
- 개인이 원하는 Exception을 따로 핸들링 할 수 있다.
@RestControllerAdvice("com.jockjock.validator.controller")
@Slf4j
public class TestControllerAdvice {
@ExceptionHandler(MethodArgumentNotValidException.class)
public String custom(MethodArgumentNotValidException e) {
BindingResult bindingResult = e.getBindingResult();
List<ObjectError> erros = bindingResult.getAllErrors();
String message = erros.get(0).getDefaultMessage();
return message;
}
}
[출처] [Spring Boot] 스프링 Validator 유효성검사 핵심 초단간 정리(2편) (#스터디)|작성자 GG
Validation Specification
Spring에서 제공하는 제약조건 어노테이션 종류