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 ── bind @RequestBody / @PathVariable / @RequestParam
▼
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 द्वारे serialize केली जाते (Jackson द्वारे JSON) किंवा एका ViewResolver द्वारे view render केला जातो.afterCompletion response commit झाल्यानंतर चालते; @ExceptionHandler/@ControllerAdvice वाटेत exceptions हाताळतात.// 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 आहेत ज्यांबद्दल मुलाखत घेणारे विचारायला आवडतात: Filters (servlet-स्तरावर, सर्वात बाहेरचे — जिथे Spring Security राहते) आणि Interceptors (Spring MVC-स्तरावर, controller भोवती). क्रम जाणून घेणे — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — तुम्हाला authentication विरुद्ध logging कुठे ठेवायचे, एखादे Security filter कोणत्याही interceptor किंवा controller आधी request का नाकारते, आणि @ControllerAdvice संपूर्ण flow मध्ये exception handling कसे केंद्रीकृत करते हे सांगते.
सविस्तर उत्तरांसह IT मुलाखत प्रश्नांचे ग्रंथालय — Junior पासून Senior पर्यंत.
देणगी द्या