Spring의 Filter는 Java Servlet 기반의 애플리케이션에 필수적인 구성 요소로, HTTP 요청과 응답을 효과적으로 관리하기 위한 전처리 및 후처리 역할을 수행한다.
1. Filter의 기본 구성
Filter는 HTTP 요청을 서버에서 처리하기 전과 후에 동작하는 메커니즘이다. 이를 통해 요청과 응답의 세밀한 조작 및 제어가 가능하다.
2. 동작 원리
- 클라이언트 요청: 웹 요청이 클라이언트로부터 발생한다.
- Filter 전처리: 도착한 요청은 설정된 Filter 순서대로 전처리를 거친다. 이 과정에서 요청 내용의 수정, 요청 차단 등이 가능하다.
- Server 처리: 모든 Filter 전처리가 종료되면, 해당 요청은 Controller나 Servlet으로 전달되어 처리된다.
- Filter 후처리: 처리된 응답은 Filter를 거치면서 후처리 단계를 진행한다. 이 단계에서 응답 내용의 수정이나 추가 작업이 가능하다.
- 응답 반환: 후처리를 거친 최종 응답이 클라이언트에게 반환된다.
3. 클라이언트의 요청-응답 시뮬레이션
- Filter
- LoggingFilter(Order1), AuthFilter(Order2)
Filter 순서 및 동작 과정
- 클라이언트 요청 발생: 클라이언트로부터 첫 번째 요청이 서버에 전송된다.
- loggingFilter (Order1) 전처리: 요청이 도착하면 loggingFilter가 먼저 동작하며, 관련된 로깅 작업이 수행된다.
- AuthFilter (Order2) 전처리: loggingFilter의 처리 이후, AuthFilter가 동작하여 인증 관련 처리를 진행한다.
- 서버 처리: Filter들의 전처리가 완료되면 실제 요청을 처리할 Controller나 Servlet이 실행된다.
- AuthFilter (Order2) 후처리: Controller나 Servlet의 처리 이후에는 AuthFilter의 후처리 로직이 실행된다.
- loggingFilter (Order1) 후처리: 마지막으로 loggingFilter의 후처리 로직이 실행되며, 관련된 로깅 작업이 수행된다.
- 클라이언트 응답: 최종 처리된 응답이 클라이언트에게 반환된다.