Katika Spring Boot (Spring MVC), request hupitia servlet container, mnyororo wa Filters, DispatcherServlet kuu, kisha interceptors na @Controller yako, na thamani inayorejeshwa hubadilishwa kuwa HTTP response.
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── front controller
▼
HandlerMapping ── tafuta method ya @Controller
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── bind @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── mantiki yako → hurejesha object au ResponseEntity
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── serialize kwenda JSON au render view
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter. Filters (ikijumuisha Spring Security) ni tabaka la nje kabisa na zinaweza kuzuia au kufunika request kabla MVC haijaiona.preHandle — HandlerInterceptor huendeshwa kabla ya controller (ukaguzi wa auth, logging, upimaji muda); kurejesha false husimamisha request.@PathVariable, @RequestParam, na @RequestBody (kupitia HttpMessageConverter) hubind na kuthibitishwa.@RestController huendesha mantiki ya biashara na hurejesha object au ResponseEntity.postHandle, kisha thamani inayorejeshwa huserialize na HttpMessageConverter (JSON kupitia Jackson) au view hurenderiwa na ViewResolver.afterCompletion huendeshwa baada ya response kuwasilishwa; @ExceptionHandler/@ControllerAdvice hushughulikia hitilafu njiani.// 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 = kata mzunguko
}
}
// 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. serialize kwenda JSON
}
}
Mzunguko wa maisha wa Spring una tabaka mbili tofauti za upanuzi ambazo wahoji hupenda kuchunguza: Filters (kiwango cha servlet, nje kabisa — mahali Spring Security inapoishi) na Interceptors (kiwango cha Spring MVC, kuzunguka controller). Kujua mpangilio — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — hukuambia wapi pa kuweka uthibitishaji dhidi ya logging, kwa nini Security filter hukataa request kabla ya interceptor au controller yoyote kuendeshwa, na jinsi @ControllerAdvice inavyokusanya ushughulikiaji wa hitilafu katika mtiririko mzima.
Maktaba ya maswali ya mahojiano ya IT yenye majibu ya kina — kutoka Junior hadi Senior.
Changia