어흥
[Spring] Filter vs Interceptor vs AOP 본문
728x90
반응형
1. 전체적인 흐름
2. 특징
Filter | Interceptor | AOP | |
특징 | Servlet 단위에서 실행 | Method를 감싸는 Proxy 패턴 | |
역할 | 요청과 응답을 거른 뒤 정제 | 요청에 대한 작업 전/후로 가로챈다 | OOP로 했을 때, 중복을 줄일 수 없는 부분을 줄이기 위해 종단면에서 바라보고 처리 |
사용 용도 | 1. 인코딩 변환 처리, 2. XSS 방어 | 스프링의 모든 Bean 객체에 접근 가능 1. 로그인/권한 체크 2. 프로그램 실행시간 계산 3. 로그 확인 |
비즈니스단의 메서드에서 더 세밀하게 조정하고 싶을 때 사용 1. 로깅 2. 트랜잭션 3. 에러 처리 |
실행 메서드 및 방법 | Init() doFilter() destroy() |
preHandler() postHandler() afterCompletion(): view 페이지 렌더링 이후 |
AOP의 포인트컷 1. @Before 2. @After 3. @After-returning 4. @After-throwing 5. @Around |
3. AOP vs Interceptor
Spring Interceptor는 DispatcherServlet이 Controller를 호출하기 전/후로 끼어들어서 Spring Context 내부에서 Controller에 관한 Request와 Response를 처리. 또한, 파라미터로 HttpServletRequest, HttpServletRespond를 사용해서 Controller로 넘어가는 Request와 Response 데이터를 좀 더 처리하기 용이
반면, Spring AOP는 주로 트랜잭션, 로깅 등 비즈니스단의 메서드에서 더 세밀하게 조정하고 싶을 때 사용.
※ 토비의 스프링 中 발췌
Interceptor과 AOP중에서 고민이라면?
[스프링 MVC의 컨트롤러]
1. 타입이 하나로 정해져 있지 않다
2. 실행 메소드 또한 제각각이기 때문에 적용할 메소드를 선별하는 포인트컷 작성도 쉽지 않다
3. 파라미터나 리턴값 또한 일정치 않다
이에 따라, 컨트롤러에 AOP를 사용할 경우 많은 수고가 필요하다
하지만 스프링 MVC는 모든 종류의 컨트롤러에게 동일한 핸들러 인터셉터를 적용할 수 있게 해준다
따라서 컨트롤러에 공통적으로 적용할 부가기능이라면 핸들러 인터셉터를 이용하는 편이 낫다
[참고 자료]
- https://willseungh0.tistory.com/84
- https://goddaehee.tistory.com/154
728x90
반응형
'Web' 카테고리의 다른 글
[Web] 브라우저에 URL을 입력한다면? (4) | 2021.05.21 |
---|---|
[백엔드] 내용 정리 - 2 (1) | 2021.04.18 |
[Web] URI v.s URL (0) | 2021.04.09 |
[Web - Front end] 수정한 JS, CSS 파일이 적용이 안될 때 (3) | 2021.03.23 |
[Web] 웹 실행순서 (0) | 2021.03.08 |
Comments