[Spring] Validator 유효성 검사

홍승보·2022년 7월 5일
0

Spring

목록 보기
1/2

Validator이 필요한 이유

  • 서버에서 들어온 Request Message가 서버에서 요구하는 스펙에 잘 맞게 들어왔는지 검사해야할 필요가 있음
  • 하나씩 Request check를 할 수도 있지만 검사 코드가 너무나 길어질 수가 있음
  • 이러한 상황을 방지하기 위해서 Validator을 사용
  • 하나의 메소드는 하나의 일만 수행하고, 큰 단위의 모듈을 작은 단위의 모듈로 쪼개고 각각의 모듈의 응집도는 높이고 의존성은 낮게 validation 영역은 프레임워크에게 토스 하여 제어의 역전 흐름을 통해 비즈니스 로직을 더 가볍게 만든다.

Spring Validator

//build,gradle 
dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-validation' //추가
	....
}

[출처] [Spring Boot] 스프링 Validator 유효성검사 핵심 초단간 정리(1) (#스터디)|작성자 GG
// TestVO.java

@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에서 제공하는 제약조건 어노테이션 종류

profile
Junior BE Developer

0개의 댓글