Spring Boot (Spring MVC) లో, ఒక request servlet container, Filters గొలుసు, కేంద్ర DispatcherServlet, తర్వాత interceptors మరియు మీ @Controller గుండా వెళుతుంది, మరియు return value HTTP response గా మార్చబడుతుంది.
Spring Boot (Spring MVC) లో, ఒక request servlet container, Filters గొలుసు, కేంద్ర 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 గొలుసుకు అప్పగిస్తుంది. Filters (Spring Security తో సహా) బయటి పొర మరియు MVC చూడటానికి ముందు request ను block చేయవచ్చు లేదా చుట్టుముట్టవచ్చు.preHandle — HandlerInterceptor లు controller కు ముందు నడుస్తాయి (auth తనిఖీలు, logging, టైమింగ్); 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 దారిలో మినహాయింపులను నిర్వహిస్తాయి.// 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 లో interviewers పరిశీలించడానికి ఇష్టపడే రెండు విభిన్న extension పొరలు ఉన్నాయి: Filters (servlet-స్థాయి, బయటిది — Spring Security నివసించే చోటు) మరియు Interceptors (Spring MVC-స్థాయి, controller చుట్టూ). క్రమాన్ని తెలుసుకోవడం — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — authentication ను logging కు వ్యతిరేకంగా ఎక్కడ ఉంచాలో, ఏదైనా interceptor లేదా controller నడవడానికి ముందు ఒక Security filter ఒక request ను ఎందుకు తిరస్కరిస్తుందో, మరియు మొత్తం flow అంతటా @ControllerAdvice exception handling ను ఎలా కేంద్రీకరిస్తుందో మీకు చెబుతుంది.
జూనియర్ నుండి సీనియర్ వరకు వివరణాత్మక సమాధానాలతో IT ఇంటర్వ్యూ ప్రశ్నల లైబ్రరీ.
విరాళం