• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • Spring MVC 마스터하기 Validation 6
        2022년 05월 26일
        • starryeye
        • 작성자
        • 2022.05.26.:55
        반응형

        BindingResult 의 reject, rejectValue 메서드 사용에 의해 검증 로직이 한층 가벼워 졌다...

         

        하지만, 컨트롤러의 입장에서 보면 아직도 코드가 길고 복잡하다...

         

        위와 같이 하나의 메서드 컨트롤러에서 검증에서 성공했을때의 로직(컨트롤러에 진짜 들어가야할 로직) 보다..

        검증하는 로직이 대부분을 차지한다..

        이를 해결해보자..

         

         

        Validator

        스프링이 제공하는 검증을 위한 인터페이스이다.

         

        Validator 인터페이스

        supports : 파라미터로 들어오는 clazz가 개발자가 의도한 검증할 클래스 타입인지 확인하는 메서드

        validate : 개발자가 의도한 검증 로직이 들어간다.

        (참고로 validate의 파라미터 중, Errors는 BindingResult의 부모 클래스이다.)

         

         

        인터페이스에 대해 알아보았으니 직접 구현해보자.

        @Component : 컴포넌트 스캔에 의해 스프링컨테이너에 스프링 빈으로 등록된다.

        supports : 메서드를 오버라이딩 하여 개발자가 검증하고 싶은 클래스타입(Item.class)이 맞는건지 확인 하는 로직이 들어감

        validate : 컨트롤러에 있었던 검증로직을 다 들고 왔다. BindingResult 의 부모인 Errors에 reject, rejectValue 메서드로 개발자 검증 에러를 넣을 수 있도록 해준다.

         

        컨트롤러를 재구성 해보자

         

        생성한 Validator를 컨트롤러의 맴버 변수로 등록한다.

        (@RequiredArgsConstructor 어노테이션을 사용하여 final 키워드가 붙은 변수를 생성자 주입이 되도록 해준다.)

         

        메서드 컨트롤러의 검증할 단계에서 주입받은 itemValidator의 validate 메서드를 호출해준다.

        파라미터로 요청에서 넘어온 개발자가 검증할 객체와 BindingResult 객체를 넘겨준다.

         

        결론..

        스프링이 제공하는 Validator 인터페이스를 활용하여 컨트롤러에서 검증로직을 뺄 수 있었다..

        반응형

        'Spring > MVC' 카테고리의 다른 글

        Spring MVC 마스터하기 Validation 8  (0) 2022.05.26
        Spring MVC 마스터하기 Validation 7  (0) 2022.05.26
        Spring MVC 마스터하기 Validation 5  (0) 2022.05.17
        Spring MVC 마스터하기 Validation 4  (0) 2022.05.17
        Spring MVC 마스터하기 Validation 3  (0) 2022.05.08
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바