Spring - filter, interceptor, aop

한펭귄·2023년 6월 12일
0

Spring

목록 보기
1/4

관련된 내용 틈틈히 정리해보자!

Filter, Interceptor, AOP

Servlet : https://code-lab1.tistory.com/210

  • 웹서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종
  • 기존에 서버는 정적 자료(HTML, 사진, 글)를 주고받았지만, 다양한 기능이 요구되면서 동적인 페이지를 제공하기 위해 서블릿 탄생
  • 서블릿은 클라이언트의 요청에 맞춰 동적인 결과를 만들어주는 자바 웹 프로그래밍 기술이다.
  • 웹 어플리케이션 서버의 서블릿 컨테이너에서 동작하고
    • request를 받으면 요청에 맞는 로직을 실행한 후
    • 클라이언트에게 HTTP 형식으로 응답한다
  • 서블릿 예제 : https://java-is-happy-things.tistory.com/23

filter, interceptor, AOP

  • 자바 웹 개발 시 '공통적으로 처리가 필요한 부분'을 실행하기 위해 활용

    • 공통 처리가 필요한 업무 : 로그인 관련, 권한 체크, XSS 방어, PC/모바일 분기, 로그 등
    • 공통 업무를 프로그램 흐름의 앞/중간/뒤에 추가하여 자동으로 처리할 수 있다.
  • 서블릿, 필터, 인터셉터, AOP의 위치

filter

  • 요청과 응답을 거른 뒤 정제하는 역할
    • dispatcherServlet 이전에 실행되는 경우 : 필터가 동작하도록 지정된 자원의 앞단에서 요청내용을 변경하거나, 체크를 수행
    • 자원의 처리가 끝난 후 실행되는 경우 : 응답 내용에 대해서 변경하는 처리 진행
  • 스프링 컨텍스트 '외부'에 존재하여 스프링과 무관한 자원에 대해 동작
  • 인코딩 변환 처리, XSS 방어 처리 등에 사용된다.

interceptor

  • 요청에 대한 작업 전후로 "가로채서" 처리
  • 스프링 컨텍스트 '내부'에서 dispatcherServlet이 컨트롤러 호출하기 전, 후에 끼어들어 컨트롤러에 관한 요청과 응답에 간섭하여 처리한다
  • 스프링의 모든 bean 객체에 접근할 수 있다
  • 인터셉터는 여러개를 사용할 수 있고, 로그인 체크, 권한체크, 로그확인 등의 업무를 처리

AOP

Aspect-Oriented Programming : https://velog.io/@backtony/Spring-AOP-%EC%B4%9D%EC%A0%95%EB%A6%AC
핵심 로직과 부가 기능을 분리하여 애플리케이션 전체에 걸쳐 사용되는 부가 기능을 모듈화하여 재사용할 수 있도록 지원하는 것
OOP와는 다르게 부가기능적인 측면에서 보았을때 공통된 요소를 추출하자는 것입니다. 이때 가로(횡단) 영역의 공통된 부분을 잘라냈다고 하여, AOP를 크로스 컷팅(Cross-Cutting) 이라고 부르기도 합니다.

  • 인터셉터나 필터와 달리, 메소드 전후의 지점에 자유롭게 설정 가능

  • 주소/파라미터/어노테이션 등 다양한 방법으로 대상 지정 가능(인터셉터, 필터는 주소로만 가능)

  • AOP의 포인트컷

    • @Before: 대상 메서드의 수행 전
    • @After: 대상 메서드의 수행 후
    • @After-returning: 대상 메서드의 정상적인 수행 후
    • @After-throwing: 예외발생 후
    • @Around: 대상 메서드의 수행 전/후
profile
얼레벌레 개발 어떻게든 가보자고 하는 이야기

0개의 댓글