🤔 Question
👉 스프링 프레임워크(Spring Framework)에서 **Filter(필터)** 와 **Interceptor(인터셉터)** 는
둘 다 **요청이 서버에 들어올 때 미리 검사하거나 처리하는 역할**을 합니다.
그런데 비슷해 보이지만, **일하는 위치와 역할이 조금 다릅니다.**
오늘은 초등학생도 이해할 수 있도록 아주 쉽게 설명해볼게요 🙂
🎯 먼저 웹 요청 흐름을 알아보기
👉 여러분이 웹사이트에 접속하면 이런 순서로 일이 진행됩니다.
1️⃣ 브라우저가 요청을 보냄
2️⃣ 서버 입구에서 요청을 검사
3️⃣ 스프링이 요청을 받아서 컨트롤러 실행
4️⃣ 결과를 다시 사용자에게 돌려줌
Filter와 Interceptor는
**2번과 3번 사이에서 미리 검사하는 친구들**이라고 생각하면 됩니다.
🎯 Filter는 무엇일까요?
👉 Filter는 **서버 입구의 보안 요원** 같은 역할입니다.
학교 정문에서
✔ 학생증 검사
✔ 위험 물건 검사
를 먼저 하죠?
Filter도 마찬가지로
✔ 로그인 했는지 확인
✔ 요청 데이터 형식 변환
✔ 문자 인코딩 처리
같은 **기본적인 입구 검사**를 담당합니다.
📌 **Filter는 스프링보다 더 바깥쪽에서 먼저 동작합니다.**
🎯 Interceptor는 무엇일까요?
👉 Interceptor는 **담임선생님** 같은 역할입니다.
정문을 통과한 학생이
✔ 수업 들을 준비가 되었는지
✔ 출석 체크
✔ 숙제 검사
를 하죠?
Interceptor도 마찬가지로
✔ 로그인한 사용자 정보 확인
✔ 권한 검사
✔ 요청 전후 로그 기록
같은 **스프링 컨트롤러 실행 전후 작업**을 담당합니다.
📌 **Interceptor는 스프링 안쪽에서 동작합니다.**
🎯 한눈에 보는 차이점
👉 Filter와 Interceptor의 차이를 표처럼 정리해볼게요.
✔ Filter
- 스프링 밖에서 동작
- 서버 입구에서 요청을 먼저 검사
- 공통 전처리 작업 담당
✔ Interceptor
- 스프링 안에서 동작
- 컨트롤러 실행 전후 검사
- 로그인, 권한, 로그 처리 담당
즉,
**Filter = 학교 정문 보안 요원**
**Interceptor = 교실의 담임선생님**
이라고 기억하면 쉽습니다 🙂
🎯 언제 무엇을 쓰면 좋을까요?
👉 이런 상황이라면 이렇게 선택하면 됩니다.
✅ 모든 요청에 공통으로 필요한 작업 → **Filter**
(예: 인코딩 처리, 기본 보안 검사)
✅ 스프링 컨트롤러 실행 전후 작업 → **Interceptor**
(예: 로그인 체크, 관리자 권한 검사)
둘 다 함께 사용하면
**더 안전하고 깔끔한 웹 프로그램**을 만들 수 있습니다.
☔ 정리
👉 스프링에서
Filter는 **서버 입구에서 먼저 검사하는 친구**
Interceptor는 **스프링 안에서 한 번 더 검사하는 친구**
라고 기억하면 됩니다.
이 둘을 잘 활용하면
**더 안전하고 관리하기 쉬운 웹 서비스**를 만들 수 있어요 😊
If I was of any help to you, please buy me coffee 😿😢😥
If you have any questions, please leave them in the comments
[2] Ads : https://apps.apple.com/us/app/beluga-classic-film-filters/id6744041061