[SPRING] FILTER, INTERCEPTOR, FRONT CONTROLLER PATTEN
1. servlet filter와 spring interceptor의 차이는
- ==둘다 요청과 응답을 가로채서 처리하는데 사용됍니다. servlet filter는 주로 요청의 인증, 로깅, 보안 등 전역적 작업을 수행합니다. spring interceptor는 spring프레임워크에서 제공하는 기능으로 컨트롤러의 메서드 호출 전후 추가작업 수행하도록 설계되었습니다. 주로 로깅, 트랜잭션관리, 인증, 권한 검사 등에 사용됍니다. 필터가 먼저 실행되고 인터셉터가 다음으로 실행됍니다. 필터는 전역적, 인터셉터는 부분적으로 사용했습니다.
2. Filter는 Servlet의 스펙이고, Interceptor는 Spring MVC의 스펙입니다. Spring Application에서 Filter와 Interceptor를 통해 예외를 처리할 경우 어떻게 해야 할까요?
- Filter는 DispatcherServlet 외부에 존재하기 때문에 예외가 발생했을 때 ErrorController에서 처리해야 합니다. 하지만 Interceptor는 DispatcherServlet 내부에 존재하기 때문에 @ControllerAdvice를 적용해서 처리할 수 있습니다.
3. 프론트 컨트롤러 패던 (spring web mvc의 dispatcher servlet는 프론트 컨트롤러 패턴을 구현한 구성요소)
- == 프론트컨트롤러 패턴은 모든 요청을 중앙 집중적관리하는 디자인 패턴입니다, 요청 분석, 핸들러 맵핑(컨트롤러), 요청처리위임, 뷰선택, 보안, 인증, 로깅 등과 같은 공통 적용기능을 처리할 수 있습니다. 필터와 인터페이스가 사용될수있습니다.