In Spring Boot (Spring MVC) passeert een request de servlet container, een keten van Filters, de centrale DispatcherServlet, dan interceptors en jouw @Controller, en wordt de returnwaarde omgezet in de HTTP-response.
In Spring Boot (Spring MVC) passeert een request de servlet container, een keten van Filters, de centrale DispatcherServlet, dan interceptors en jouw @Controller, en wordt de returnwaarde omgezet in de HTTP-response.
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── de front controller
▼
HandlerMapping ── vind de @Controller-method
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── bind @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── jouw logica → geeft object of ResponseEntity terug
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── serialize naar JSON of render view
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter-keten. Filters (inclusief Spring Security) zijn de buitenste laag en kunnen de request blokkeren of omhullen voordat MVC hem ziet.preHandle — HandlerInterceptors draaien vóór de controller (auth-checks, logging, timing); false teruggeven stopt de request.@PathVariable, @RequestParam en @RequestBody (via HttpMessageConverter) worden gebonden en gevalideerd.@RestController-method draait de businesslogica en geeft een object of ResponseEntity terug.postHandle, daarna wordt de returnwaarde geserialiseerd door een HttpMessageConverter (JSON via Jackson) of wordt een view gerenderd door een ViewResolver.afterCompletion draait nadat de response is gecommit; @ExceptionHandler/@ControllerAdvice handelen onderweg excepties af.// 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 = kortsluiten
}
}
// 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. geserialiseerd naar JSON
}
}
De lifecycle van Spring heeft twee verschillende uitbreidingslagen die interviewers graag uitdiepen: Filters (op servlet-niveau, buitenste laag — waar Spring Security leeft) en Interceptors (op Spring MVC-niveau, rondom de controller). Het kennen van de volgorde — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — vertelt je waar je authenticatie versus logging plaatst, waarom een Security-filter een request afwijst voordat welke interceptor of controller dan ook draait, en hoe @ControllerAdvice de afhandeling van excepties over de hele flow centraliseert.
Een bibliotheek met IT-sollicitatievragen met gedetailleerde antwoorden — van Junior tot Senior.
Doneren