A Spring Boot (Spring MVC), request na wucewa ta cikin servlet container, sarƙar Filters, DispatcherServlet ta tsakiya, sannan interceptors da @Controller ɗinka, sannan a mayar da ƙimar da aka mayar zuwa cikin HTTP response.
A Spring Boot (Spring MVC), request na wucewa ta cikin servlet container, sarƙar Filters, DispatcherServlet ta tsakiya, sannan interceptors da @Controller ɗinka, sannan a mayar da ƙimar da aka mayar zuwa cikin HTTP response.
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── front controller
▼
HandlerMapping ── nemo method ɗin @Controller
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── bind @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── logic ɗinka → na mayar da object ko ResponseEntity
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── serialize zuwa JSON ko render view
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter. Filters (haɗe da Spring Security) su ne layer na waje ƙwarai kuma suna iya toshewa ko naɗe request kafin MVC ya gan shi.preHandle — HandlerInterceptors na gudana kafin controller (bincike auth, logging, auna lokaci); mayar da false na dakatar da request.@PathVariable, @RequestParam, da @RequestBody (ta hanyar HttpMessageConverter).@RestController ɗinka na gudanar da business logic sannan ya mayar da object ko ResponseEntity.postHandle, sannan ana serialize ƙimar da aka mayar ta hanyar HttpMessageConverter (JSON ta Jackson) ko a render view ta ViewResolver.afterCompletion na gudana bayan an commit response; @ExceptionHandler/@ControllerAdvice na sarrafa exceptions a hanya.// 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 = toshewa da wuri
}
}
// 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. an serialize zuwa JSON
}
}
Rayuwar Spring na da layers biyu na fadaɗawa daban-daban da masu tambayoyin hira ke son bincika: Filters (matakin servlet, na waje ƙwarai — inda Spring Security ke zama) da Interceptors (matakin Spring MVC, kewaye da controller). Sanin tsari — filters, DispatcherServlet, mapping, interceptor preHandle, argument binding, controller, message conversion, afterCompletion — na gaya maka inda za a sanya authentication a kwatanta da logging, dalilin da ya sa Security filter ke ƙin request kafin kowane interceptor ko controller ya gudana, da yadda @ControllerAdvice ke tattara sarrafa exception a duk faɗin gudanuwar.
Ɗakin karatu na tambayoyin hira na IT tare da amsoshi cikakke — daga Junior zuwa Senior.
Ba da Gudummawa