• 티스토리 홈
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 마스터하기 예외처리 3
        2022년 06월 11일
        • starryeye
        • 작성자
        • 2022.06.11.:41
        반응형

        지금까지 예외처리에 대한 포스팅을 보면...

        WAS - 컨트롤러 간에 왔다갔다 하면서 중간에 있는 필터와 인터셉터가 계속 중복으로 호출된다...

         

        경우에 따라.. 필터와 인터셉터는 중복으로 호출되면 안되는 경우도 있을 것이다..

        -> 예를 들면 로그인 체크 로직을 위한 필터나 인터셉션은 이미 최초 정상요청에 의한 호출 로직에서

        검증을 했을 것이나.. 에러페이지 출력을 위한 내부 호출에서 불필요한 검증을 하게된다.

         

        그래서 정상요청에 의한 호출인지.. 에러페이지 출력을 위한 내부 호출인지 구분이 필요하다.

        -> DispatcherType을 사용해보자

         

         

        DispatcherType

        서블릿이 지원하는 enum 이다.

        REQUEST : 정상요청에 의한 호출일 경우

        ERROR : 에러페이지 출력을 위한 내부 호출일 경우

         

        Filter

        기본적으로 request.getDispatcherType()으로 필터 내부 로직에서 호출 하여 enum 값을 받을 수 있다.

         

        위와 같이 @Configuration 어노테이션을 사용한 클래스에서 FilterRegistrationBean을 등록할 때 사용할 수 있다.

        setDispatcherTypes로 해당 필터를 (위 예시에서는 LogFilter) 무슨 DispatcherType일 때 적용할 지 정의 할 수 있다.

        위 예시에서는 REQUEST, ERROR 타입일 경우 모두 해당 필터를 적용하도록 하였다.

        (기본 셋팅 값은 REQUEST 타입이다. ERROR일 경우만 호출 되게 하고 싶으면 ERROR만 set 해주면 된다.)

         

        Interceptor

        DispatcherType은 서블릿에서 제공하는 enum 이다.

        따라서 기본값은 모든 타입에 대해 다 interceptor가 호출된다.

        interceptor도 request.getDispatcherType()으로 인터셉터 내부 로직에서 호출하여 enum 값을 받을 수 있다.

        인터셉터 내부로직에서 조건문으로 처리하기 보단.. 설정부인 configuration 에서 처리하는 방법을 알아보자

        위와 같이 인터셉터 등록 Configuration에서 excludePathPattern으로

        에러페이지 출력을 위한 호출일 경우 개발자가 만든 인터셉터(Logintercptor)가 호출 되지 않도록 정의 할 수 있다.

         

        반응형

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

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

        티스토리툴바