Spring Boot (Spring MVC) मा, request servlet container, Filters को एउटा chain, केन्द्रीय DispatcherServlet, त्यसपछि interceptors र तपाईंको @Controller हुँदै जान्छ, र return value HTTP response मा रूपान्तरण हुन्छ।
Spring Boot (Spring MVC) मा, request servlet container, Filters को एउटा chain, केन्द्रीय DispatcherServlet, त्यसपछि interceptors र तपाईंको @Controller हुँदै जान्छ, र return value HTTP response मा रूपान्तरण हुन्छ।
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── front controller
▼
HandlerMapping ── @Controller method भेट्टाउँछ
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── @RequestBody / @PathVariable / @RequestParam bind गर्छ
▼
Controller method ── तपाईंको logic → object वा ResponseEntity फर्काउँछ
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── JSON मा serialize वा view render
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter chain लाई सुम्पन्छ। Filters (Spring Security सहित) सबैभन्दा बाहिरी layer हुन् र MVC ले देख्नुअघि request block वा wrap गर्न सक्छन्।preHandle — HandlerInterceptor हरू controller अघि चल्छन् (auth checks, logging, timing); false फर्काउँदा request रोकिन्छ।@PathVariable, @RequestParam, र @RequestBody (HttpMessageConverter मार्फत) bind र validate हुन्छन्।@RestController method ले business logic चलाउँछ र एउटा object वा ResponseEntity फर्काउँछ।postHandle, त्यसपछि return value एउटा HttpMessageConverter (Jackson मार्फत JSON) द्वारा serialize हुन्छ वा एउटा view ViewResolver द्वारा 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 = short-circuit
}
}
// 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 layers छन् जुन interviewers ले सोध्न मन पराउँछन्: Filters (servlet-level, सबैभन्दा बाहिरी — जहाँ Spring Security बस्छ) र Interceptors (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 अन्तर्वार्ता प्रश्नहरूको पुस्तकालय — जुनियरदेखि सिनियरसम्म।
दान गर्नुहोस्