spring boot - interceptor

code_able·2024년 6월 1일
0
post-custom-banner

인터셉터란

서버로 들어온 Request 객체를 컨트롤러의 핸들러에 오기 전에
가로채서 원하는 작업을 할 수 있도록 하는 기능이다.
주로 로그인 여부나 권한 등의 여부를 판단하는 기능에 활용 된다.

작동 과정

  1. url을 통해 서버에 request 객체 전송
  2. DispatcherServlet은 request객체를받아 핸들러를 찾도록 요청한다.
  3. 핸들러 실행체인이 인터셉터를 거처 실행된다.

인터셉터의 장점

  1. 메모리 낭비 및 서버의 부하를 감소 시킨다.
    컨트롤러 마다 검증 코드를 붙이면 그만큼 메모리에 올려야 하는 코드가 많아 지며
    서버의 부담이 커지는데 이를 인터셉터 하나에서 관리하면 해결이 가능하다.

  2. 코드의 누락 방지
    특정 컨트롤러에서 로그인 판단 로직을 빼먹을 걱정을 줄일 수 있다.

구현 방법

  1. HandlerInterceptor로 인터페이스를 구현하거나 HandlerInterceptorAdapor를 상속받아
    오버라이딩을 하여 인터셉터 클래스를 만든다.

  2. 부모 클래스에 오버라이딩 할 수 있는 메서드는 3가지다

  • preHandle()
    • 컨트롤러가 호출 되기 전 실행
    • 리턴값이 boolean형으로 true일때는 핸들러에 접근하고 false일 경우 작업을 중단 한다.
  • postHandle()
    • 핸들러의 실행이 완료되고 view가 생성되기 전에 호출된다.
    • model 객체의 정보를 조작할 수 있다.
  • afterCompletion()
    • view에 최종결과를 생성한 후 실행 된다.
profile
할수 있다! code able
post-custom-banner

0개의 댓글