Validation?

유효성 검증이다.
사용자 또는 서버의 요청 내용에서 잘못된 내용이 있는지 확인하는 단계를 뜻한다.

데이터 검증과 비즈니스 검증

데이터 검증

  • 필수 데이터의 존재 유무를 확인할떄
  • 문자열의 길이나 숫자형 데이터의 경우 값의 범위를 검증할때
  • email,신용카드 번호 등 특정 형식에 맞춘 데이터인지 검증할떄

비즈니스 검증

  • 서비스의 정책에 따라 데이터를 확인하여 검증한다.
  • 경우에 따라 외부 API를 호출하거나 DB의 데이터까지 조회하여 검증하는 경우도 존재한다.

Spring 의 Validation

스프링 같은 경우엔 웹 레이어에 종속적이지 않은 방법으로 검증을 진행한다.

Java Bean Validation

Java Bean 기반으로 간편하게 개별 데이터를 검증한다.

이렇게 어노테이션으로 검증 방법을 명시한 후에, 컨트롤러에 @Valid 을 달고 매개변수로 보내주면, 문제가 없을때 메서드 내부로 진입이 되고, 있을때는 예외를 발생시킨다.

Validation 수행시 주의사항 및 패턴

주의사항

  • Validation 이 너무 여러군데에 흩어져있으면 테스트 및 유지보수성이 떨어진다.
    • 중복된 검증 : 정책이 변경될 시에 모든 중복 코드를 수정해야한다.
    • 다른 검증 : 여러 군데에서 다른 정책을 따르는 검증이 수행될 수도 있다.

Validation 활용 예제

JavaBean 에서의 Validation 으로 검증 후, 비즈니스 검증을 한번 더 처리해 뷰에서 오류를 출력하는 방법이다.

검증을 진행할 원하는 RequestDto 에 Validation 을 달아준다.

차례로 getmapping 메소드에 해당 dto를 modelattribute 에 추가해 넘겨주고, PostMapping 메소드에 검증할 데이터 앞에 @Valid 어노테이션을 달아주고, 검증할 데이터 뒤에 BindingResult 을 매개타입으로 가져와준다.

그리고 오류가 발생했을시에 다시 해당 폼으로 돌아가게 구현해준다.

타임리프로 필드명을 지정해준 후에 해당 필드에 오류가 발생할시에 문구를 출력하게 해준다.

null 값을 전달해 에러가 발생하는게 아닌 기존의 폼에서 오류메세지를 출력해주는 모습이다.

profile
자스코드훔쳐보는변태

0개의 댓글