F'Spring Boot (Spring MVC), request jgħaddi mis-servlet container, katina ta' Filters, id-DispatcherServlet ċentrali, imbagħad l-interceptors u l-@Controller tiegħek, u l-valur li jintbagħat lura jiġi konvertit fil-HTTP response.
F'Spring Boot (Spring MVC), request jgħaddi mis-servlet container, katina ta' Filters, id-DispatcherServlet ċentrali, imbagħad l-interceptors u l-@Controller tiegħek, u l-valur li jintbagħat lura jiġi konvertit fil-HTTP response.
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── il-front controller
▼
HandlerMapping ── sib il-method @Controller
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── ibbindja @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── il-logic tiegħek → jibgħat object jew ResponseEntity
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── serializza għal JSON jew irrenderja view
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter. Il-Filters (inkluż Spring Security) huma s-saff l-aktar barrani u jistgħu jimblokkaw jew jgeżwru r-request qabel ma MVC jarah.preHandle — l-HandlerInterceptors jiġru qabel il-controller (kontrolli tal-auth, logging, timing); li tibgħat false iwaqqaf ir-request.@PathVariable, @RequestParam, u @RequestBody (permezz ta' HttpMessageConverter) jiġu bbindjati u vvalidati.@RestController tiegħek iħaddem il-business logic u jibgħat object jew ResponseEntity.postHandle, imbagħad il-valur li jintbagħat lura jiġi serializzat minn HttpMessageConverter (JSON via Jackson) jew view jiġi rrenderjat minn ViewResolver.afterCompletion jiġri wara li r-response jiġi kommess; @ExceptionHandler/@ControllerAdvice jimmaniġġjaw l-eċċezzjonijiet tul it-triq.// 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 = aqta' l-proċess
}
}
// 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. serializzat għal JSON
}
}
Iċ-ċiklu tal-ħajja ta' Spring għandu żewġ saffi ta' estensjoni distinti li l-intervistaturi jħobbu jistħarrġu: Filters (fil-livell tas-servlet, l-aktar barrani — fejn jgħix Spring Security) u Interceptors (fil-livell ta' Spring MVC, madwar il-controller). Li tkun taf l-ordni — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — jgħidlek fejn tqiegħed l-awtentikazzjoni versus il-logging, għaliex Security filter jirrifjuta request qabel ma jiġri kwalunkwe interceptor jew controller, u kif @ControllerAdvice jiċċentralizza l-immaniġġjar tal-eċċezzjonijiet fil-fluss kollu.
Librerija ta' mistoqsijiet ta' intervisti tal-IT b'tweġibiet dettaljati — minn Junior sa Senior.
Iddona