Spring Boot: Filters vs Interceptors (Notes + Extra)

 


Spring Boot: Filters vs Interceptors (Notes + Extra)

1. Basic Difference

Filter Interceptor
Intercepts HTTP Request & Response before reaching the servlet Intercepts before reaching the Controller
Part of Servlet specification (javax.servlet.Filter) Part of Spring Framework
Works at container level (Tomcat) Works at Spring MVC level
Cannot access Handler/Controller info Can access HandlerMethod & ModelAndView
Best for logging, security, compression, CORS Best for auth, validation, performance tracking

2. Request Flow (From Diagram on Page 1)

Client
  |
  v
Tomcat (Servlet Container)
  |
Filters Chain
  |
DispatcherServlet
  |
Interceptors
  |
Controller

➡ Response flows back in reverse order.


3. What is a Servlet? (Page 1)

A Servlet is a Java class that:

  • Accepts the incoming request
  • Processes it
  • Returns the response

You can create multiple servlets:

  • Servlet 1 → REST APIs
  • Servlet 2 → SOAP APIs

Spring provides DispatcherServlet, which by default handles all APIs (“/*”).


4. Filters (Page 1)

Used when:

  • You want logic independent of servlet
  • Common logic for all requests
  • Can have multiple filters with order

Examples:

  • JWT validation
  • Logging
  • CORS
  • Request/Response modification

5. Interceptors (Page 1)

Used when:

  • Logic is specific to Spring Controllers
  • Need access to handler/controller method
  • Can have multiple interceptors with order

Methods:

  • preHandle()
  • postHandle()
  • afterCompletion()

6. Multiple Interceptors & Ordering (Page 2)

If preHandle() returns false:

Next interceptor and controller will NOT execute.

Order:

Interceptor1 → Interceptor2 → Controller
Controller → Interceptor2 → Interceptor1

7. Sample Execution Output (Page 2)

Inside pre handle method - MyCustomInterceptor1
Inside pre handle method - MyCustomInterceptor2
hitting db to get the userdata
Inside post handle method - MyCustomInterceptor2
Inside post handle method - MyCustomInterceptor1
Inside after completion method - MyCustomInterceptor2
Inside after completion method - MyCustomInterceptor1

8. Filter Execution Output (Page 2)

MyFilter1 inside
MyFilter2 inside
hitting db to get the userdata
MyFilter2 completed
MyFilter1 completed

9. When Both Are Used Together (Page 3)

Execution order:

MyFilter1 inside
MyFilter2 inside
preHandle Interceptor1
preHandle Interceptor2
Controller
postHandle Interceptor2
postHandle Interceptor1
afterCompletion Interceptor2
afterCompletion Interceptor1
MyFilter2 completed
MyFilter1 completed

EXTRA REAL-TIME INTERVIEW POINTS

🔹 Filter vs Interceptor vs AOP

Feature Filter Interceptor AOP
Level Servlet Spring MVC Method level
Scope All requests Controller requests Business logic
Use case CORS, Logging Auth, metrics Transactions, security

SHORT INTERVIEW Q&A

Q1. Can a Filter access Controller method?
❌ No. Only Interceptors can.

Q2. Which runs first? Filter or Interceptor?
👉 Filter runs first.

Q3. Can we stop request in Interceptor?
✅ Yes, by returning false in preHandle().

Q4. Can Filter be used without Spring?
✅ Yes. It is part of Servlet API.

Q5. Can Interceptor work without DispatcherServlet?
❌ No. It depends on Spring MVC.

 

Leave a Reply