✔️ Filter와 Interceptor 차이
Filter와 Interceptor
- 애플리케이션에서 자주 사용되는 기능을 분리하여 관리할 수 있도록 스프링이 제공하는 기능

- 서버 실행 시 Dispatcher Servlet이 올라오는 동안 init 후 Filter의 doFilter 실행
- Dispatcher Servlet을 지나쳐 Interceptor의 preHandler 실행
- 컨트롤러를 거쳐 내부 로직을 수행한 후, Interceptor의 postHandler 실행
- Filter의 doFilter 실행
- Dispatcher Servlet 종료 시 destroy
Filter란?
- Dispatcher Servlet 이전에 수행되고, 응답 처리에 대해서도 변경 및 조작 수행이 가능함
- WAS(Web Application Server) 내의 ApplicationContext에서 등록된 필터가 실행하게 됨
- WAS 구동 시 FilterMap이라는 배열이 등록되고, 실행 시 Filter chain을 구성하여 순차적으로 실행함
- Spring Context 외부에 존재하여 스프링과 무관한 자원에 대해 동작함
- 일반적으로 web.xml에 설정하며 예외 발생 시 Web Application에서 예외 처리를 하게 됨
- 실행 메소드로는 필터 인스턴스를 초기화하는 init, 실제 로직을 처리하는 doFilter, 필터 인스턴스를 종료하는 destroy가 존재
- 인코딩 변환, XSS 방어 등에 사용
Interceptor란?
- Dispatcher Servlet 이후 Controller 호출 전, 후에 끼어들어 수행됨
- Spring Context 내부에서 Controller의 요청과 응답에 관여하여 모든 빈에 접근 가능함
- 일반적으로 servlet-context.xml에 설정하며 예외 발생 시 @ContollerAdvice에서 @ExceptionHandler를 사용해 예외 처리
- 실행 메소드로는 Controller 실행 전 preHandler, Controller 실행 후 postHandler, 뷰 렌더링 후 afterCompletion이 존재
- 로그인 체크, 권한 체크, 로그 확인 등에 사용하며
@RequestMapping을 사용해 매핑된 @Controller의 메소드를 파라미터로 제공하여
메소드 시그니처 등의 추가 정보를 파악해 로직의 실행 여부를 판단할 수 있음
'Tech Interview > Language' 카테고리의 다른 글
[Language] JPA (0) | 2024.03.30 |
---|---|
[Language] Test Code (0) | 2024.03.30 |
[Language] Spring JDBC를 이용한 데이터 접근 (0) | 2024.03.29 |
[Language] DAO vs DTO (0) | 2024.03.29 |
[Language] POJO (0) | 2024.03.29 |
✔️ Filter와 Interceptor 차이
Filter와 Interceptor
- 애플리케이션에서 자주 사용되는 기능을 분리하여 관리할 수 있도록 스프링이 제공하는 기능

- 서버 실행 시 Dispatcher Servlet이 올라오는 동안 init 후 Filter의 doFilter 실행
- Dispatcher Servlet을 지나쳐 Interceptor의 preHandler 실행
- 컨트롤러를 거쳐 내부 로직을 수행한 후, Interceptor의 postHandler 실행
- Filter의 doFilter 실행
- Dispatcher Servlet 종료 시 destroy
Filter란?
- Dispatcher Servlet 이전에 수행되고, 응답 처리에 대해서도 변경 및 조작 수행이 가능함
- WAS(Web Application Server) 내의 ApplicationContext에서 등록된 필터가 실행하게 됨
- WAS 구동 시 FilterMap이라는 배열이 등록되고, 실행 시 Filter chain을 구성하여 순차적으로 실행함
- Spring Context 외부에 존재하여 스프링과 무관한 자원에 대해 동작함
- 일반적으로 web.xml에 설정하며 예외 발생 시 Web Application에서 예외 처리를 하게 됨
- 실행 메소드로는 필터 인스턴스를 초기화하는 init, 실제 로직을 처리하는 doFilter, 필터 인스턴스를 종료하는 destroy가 존재
- 인코딩 변환, XSS 방어 등에 사용
Interceptor란?
- Dispatcher Servlet 이후 Controller 호출 전, 후에 끼어들어 수행됨
- Spring Context 내부에서 Controller의 요청과 응답에 관여하여 모든 빈에 접근 가능함
- 일반적으로 servlet-context.xml에 설정하며 예외 발생 시 @ContollerAdvice에서 @ExceptionHandler를 사용해 예외 처리
- 실행 메소드로는 Controller 실행 전 preHandler, Controller 실행 후 postHandler, 뷰 렌더링 후 afterCompletion이 존재
- 로그인 체크, 권한 체크, 로그 확인 등에 사용하며
@RequestMapping을 사용해 매핑된 @Controller의 메소드를 파라미터로 제공하여
메소드 시그니처 등의 추가 정보를 파악해 로직의 실행 여부를 판단할 수 있음
'Tech Interview > Language' 카테고리의 다른 글
[Language] JPA (0) | 2024.03.30 |
---|---|
[Language] Test Code (0) | 2024.03.30 |
[Language] Spring JDBC를 이용한 데이터 접근 (0) | 2024.03.29 |
[Language] DAO vs DTO (0) | 2024.03.29 |
[Language] POJO (0) | 2024.03.29 |