I Spring Boot (Spring MVC) passerar en request genom servlet-containern, en kedja av Filters, den centrala DispatcherServlet, sedan interceptors och din @Controller, och returvärdet omvandlas till HTTP-responsen.
I Spring Boot (Spring MVC) passerar en request genom servlet-containern, en kedja av Filters, den centrala DispatcherServlet, sedan interceptors och din @Controller, och returvärdet omvandlas till HTTP-responsen.
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── front controllern
▼
HandlerMapping ── hitta @Controller-metoden
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── binda @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── din logik → returnerar object eller ResponseEntity
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── serialisera till JSON eller rendera view
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter-kedjan. Filters (inklusive Spring Security) är det yttersta lagret och kan blockera eller omsluta requesten innan MVC ser den.preHandle — HandlerInterceptors körs före controllern (auth-kontroller, logging, tidmätning); att returnera false stoppar requesten.@PathVariable, @RequestParam och @RequestBody (via HttpMessageConverter) binds och valideras.@RestController-metod kör affärslogiken och returnerar ett object eller ResponseEntity.postHandle, sedan serialiseras returvärdet av en HttpMessageConverter (JSON via Jackson) eller så renderas en view av en ViewResolver.afterCompletion körs efter att responsen har committats; @ExceptionHandler/@ControllerAdvice hanterar undantag längs vägen.// 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 = kortslut
}
}
// 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. serialiseras till JSON
}
}
Springs livscykel har två distinkta utökningslager som intervjuare älskar att undersöka: Filters (servlet-nivå, ytterst — där Spring Security bor) och Interceptors (Spring MVC-nivå, runt controllern). Att känna till ordningen — filters, DispatcherServlet, mapping, interceptor preHandle, argumentbindning, controller, meddelandekonvertering, afterCompletion — talar om var du ska placera autentisering kontra logging, varför ett Security-filter avvisar en request innan någon interceptor eller controller körs, och hur @ControllerAdvice centraliserar undantagshantering genom hela flödet.
Ett bibliotek med IT-intervjufrågor och detaljerade svar — från Junior till Senior.
Donera