Filter, Interceptor, AOP
Filter, Interceptor, AOP 모두 무슨 행동을 하기전에 먼저 실행하거나, 실행한 후에 추가적인 행동을 할 때 사용된다. 요청의 흐름에 따라 필터, 인터셉터, AOP의 차이점에 대해 알아봅니다.
전체 흐름, 차이점
요청이 들어왔을 때 진행되는 순서는 Filter → Interceptor → AOP → Interceptor → Filter의 순으로 거치게 됩니다.
Filter의 역할
Filter는 J2EE표준 스펙 기능으로, Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공한다.
- Web Application에 등록한다.
- 스프링 컨텍스트 외부에 존재하여 스프링과 무관한 자원에 대해 동작한다.
- Request, Response 객체를 직접 조작할 수 있다.
- 인코딩 처리, 보안, 로그인과 권한 검사 등의 요청에 대한 처리
Interceptor의 역할
DistpatcherServlet 이 컨트롤러를 호출하기 전, 후로 끼어들어 스프링 컨텍스트(Context, 영역) 내부에서 Controller(Handler)에 관한 요청과 응답에 대해 처리한다.
- Spring의 Context에 등록한다.
- 스프링의 모든 Bean에 접근 할 수 있다.
- Request, Response 객체를 직접 조작할 수 없지만 request와 response 내부의 값
- 로그인 체크, 권한 체크
AOP
관점 지향 프로그래밍을 말하며, 객체 지향의 프로그램이에서 중복을 줄일 수 없는 부분을 줄이기 위해 하나의 관점으로 바라보고 처리한다.
- 로깅, 트랜잭션, 에러 처리 등
- 인터셉터 대신에 컨트롤러들에 적용할 부가기능을 어드바이스로 만들어 AOP 적용
- 컨트롤러는 파라미터, 리턴 값, 타입과 메소드가 일정하지 않고 호출 패턴도 정해져 있지 않기 때문에 번거로운 부가 작업이 생길 수 있다.
728x90
'# Back-End > Spring' 카테고리의 다른 글
Spring Security란? (0) | 2022.01.23 |
---|---|
JWT란? (0) | 2022.01.23 |
인증 방식 비교(서버 기반 인증, 토큰 기반 인증) (0) | 2022.01.23 |
[Test] Spring Layer별 테스트 작성 (1) | 2022.01.23 |
[Test] Spring Boot 테스트 클래스 정의 어노테이션 (0) | 2022.01.23 |
[Test] JUnit5를 이용한 테스트 코드 작성 (0) | 2022.01.23 |
H2 console 세팅 & 접속 (0) | 2021.11.19 |