Spring Boot (Spring MVC)-এ, একটি request servlet container, Filter-এর একটি chain, কেন্দ্রীয় DispatcherServlet, তারপর interceptor ও আপনার @Controller-এর মধ্য দিয়ে যায়, এবং return value HTTP response-এ রূপান্তরিত হয়।
Spring Boot (Spring MVC)-এ, একটি request servlet container, Filter-এর একটি chain, কেন্দ্রীয় DispatcherServlet, তারপর interceptor ও আপনার @Controller-এর মধ্য দিয়ে যায়, এবং return value HTTP response-এ রূপান্তরিত হয়।
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── front controller
▼
HandlerMapping ── @Controller method খুঁজে বের করে
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── bind @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── আপনার logic → object বা ResponseEntity ফেরত দেয়
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── JSON-এ serialize বা view render
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter chain-এ হস্তান্তর করে। Filter গুলি (Spring Security সহ) হলো সবচেয়ে বাইরের layer এবং MVC দেখার আগেই request block বা wrap করতে পারে।preHandle — HandlerInterceptor গুলি controller-এর আগে চলে (auth check, logging, timing); false ফেরত দিলে request থেমে যায়।@PathVariable, @RequestParam, এবং @RequestBody (HttpMessageConverter-এর মাধ্যমে) bind ও validate হয়।@RestController method business logic চালায় এবং একটি object বা ResponseEntity ফেরত দেয়।postHandle, তারপর return value একটি HttpMessageConverter (Jackson-এর মাধ্যমে JSON) দ্বারা serialize হয় বা একটি ViewResolver দ্বারা একটি view render হয়।afterCompletion response commit হওয়ার পরে চলে; @ExceptionHandler/@ControllerAdvice পথে exception হ্যান্ডল করে।// 4/7/8. interceptor
public class TimingInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object h) {
req.setAttribute("started", System.nanoTime());
return true; // false = আগেভাগে থামায়
}
}
// 6. controller
@RestController
class ItemController {
@GetMapping("/items/{id}") // 3. mapping
ResponseEntity<Item> show(@PathVariable Long id) { // 5. argument resolution
return ResponseEntity.ok(service.find(id)); // 7. JSON-এ serialize
}
}
Spring-এর lifecycle-এ দুটি স্বতন্ত্র extension layer আছে যা interviewer-রা খুঁটিয়ে দেখতে পছন্দ করেন: Filter (servlet-level, সবচেয়ে বাইরের — যেখানে Spring Security থাকে) এবং Interceptor (Spring MVC-level, controller-এর চারপাশে)। ক্রমটি জানা — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — আপনাকে বলে দেয় কোথায় authentication বনাম logging রাখতে হবে, কেন একটি Security filter কোনো interceptor বা controller চলার আগেই একটি request প্রত্যাখ্যান করে, এবং কীভাবে @ControllerAdvice পুরো flow জুড়ে exception handling কেন্দ্রীভূত করে।
বিস্তারিত উত্তরসহ IT ইন্টারভিউ প্রশ্নের একটি লাইব্রেরি — জুনিয়র থেকে সিনিয়র পর্যন্ত।
দান করুন