Spring 필터
- Filter는 들어온 요청을 걸러주는 역할을 하며, Spring에서도 동일하게 요청을 걸러주는 역할.
- Filter는 Controller, Service, Repository 등 핵심 로직이 실행되기 전에 모든 요청을 먼저 처리.
- 실제 요청 흐름은 Postman → Filter → Controller → Filter → Postman 순으로, Filter를 들어갈 때와 나갈 때 총 두 번 통과하는 구조.
- 가장 대표적으로 사용되는 Filter는 OncePerRequestFilter
Filter 구현 구조
- Filter를 구현할 때는 이미 구현되어 있는 OncePerRequestFilter를 상속받아 사용.
- Filter의 로직은 FilterChain.doFilter() 코드를 기준으로 요청이 들어올 때 실행되는 부분과 요청이 나갈 때 실행되는 부분이 구분됨.
- FilterChain.doFilter() 위에 작성된 로직은 요청이 들어올 때 실행되며, 아래에 작성된 로직은 요청이 나갈 때 실행.
- @Component Annotation 사용
Filter chain
- FilterChain은 Spring에 등록된 Filter들의 묶음(Chain)을 의미.
일반적으로 Filter는 단일이 아닌 여러 개를 만들어 사용하며, 요청은 이 FilterChain을 순차적으로 통과.
- FilterChain.doFilter()는 Filter Chain 안에 들어있는 다음 Filter를 실행시키라는 의미.
- Filter의 실행 순서는 @Order Annotation을 통해 지정 가능.
요청이 들어올 때는 지정된 순서(예: 1, 2)대로 실행되지만, 나갈 때는 역순(예: 2, 1)으로 실행됨