일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- UML
- java
- 비트마스크
- 데이터 flow
- DP
- 문자열
- dataframe
- equals
- 다익스트라
- 파이썬
- 위상정렬
- Redis
- springboot
- BFS
- 알고리즘
- ddd
- dfs
- 포트앤어댑터 아키텍처
- series
- 스프링
- docker
- 자바
- pandas
- 헥사고날 아키텍처
- JPA
- disjoint set
- 백준
- 이펙티브 자바
- 세그먼트 트리
- spring security
- Today
- Total
코딩못하는사람
Filter와 Interceptor 본문
Filter란?
Dispatcher Servlet에 요청이 전달되기 전/후에 url 패턴에 맞는 모든 요청에 대해 부가작업을 처리할 수 있는 기능을 제공해준다.말 그대로 client와 Dispatcher Servlet사이에 필요한 작업을 할 수 있도록 필터를 사용하는 것이다.
- init() : 필터 초기화
- doFilter() : 전, 후처리용 메소드, 내부에서 filterChain.doFilter를 호출하여 해당 비즈니스처리를 계속해서 수행한다.
- destory() : 필터 종료이후 실행.
Intercepter란?
Spring이 제공하는 기술로,Dispatcher Servlet을 통과하고 handler mapping을 완료한 후 Controller에 들어가기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 기능을 제공한다.
메서드에 따라 다른 실행 시점을 가져간다.
- preHandle() (컨트롤러가 호출되기 전)
- postHandle() (컨트롤러를 호출된 후)
- afterCompletion() (view를 렌더링한 후)
Filter와 Inteceptor의 공통점
요청에 대한 전후 처리 하는 역할을 수행한다. 또한 uri기반으로 언제 실행할 것인지를 조정 가능하며, 직접 request의 내용을 파악해서 원하는 조건에 부합할 때 로직을 수행할 수 있다
Filter와 Inteceptor의 차이점
Filter
필터에서는 웹 에플리케이션에서 전역적으로 처리해야 하는 작업에 사용 된다.
보안과 관련된 작업에 유용하게 사용된다. 인터셉터보다 앞단에서 작용되기 때문에 스프링 컨테이너까지 요청을 가지 않게 할 수 있다.
더 나아가 필터는 ServletRequest,ServletResponse를 교체할 수 있다는 점에서 강력하다
(이 기능의 필요성 및 예시는 여기에 있다)
interceptor
클라이언트의 요청과 관련하여 전역적으로 처리해야 하는 작업에 사용된다.
요청에 대한 인증 및 인가 작업에 주로 사용된다. 컨트롤러로 넘겨주기 위한 데이터를 가공하거나 추가적인 로직을 적용하기에 좋다(AOP와 비슷하다)
공부한 곳
https://supawer0728.github.io/2018/04/04/spring-filter-interceptor/
'스프링(Spring) > 개념' 카테고리의 다른 글
@Transactional의 동작방식(AOP,PSA) (0) | 2022.01.03 |
---|---|
@AuthenticationPrincipal 어노테이션 (0) | 2022.01.02 |
스프링과 스프링부트 (0) | 2021.09.17 |
스프링이 무엇이고 왜 나왔을까? (1) | 2021.09.17 |
객체지향 설계 5원칙-SOLID (0) | 2021.09.17 |