Di Spring Boot (Spring MVC), sebuah request melewati servlet container, sebuah rantai Filter, DispatcherServlet pusat, lalu interceptor dan @Controller Anda, dan nilai kembalian diubah menjadi HTTP response.
Di Spring Boot (Spring MVC), sebuah request melewati servlet container, sebuah rantai Filter, DispatcherServlet pusat, lalu interceptor dan @Controller Anda, dan nilai kembalian diubah menjadi HTTP response.
Servlet container (Tomcat)
▼
Filter chain ── (CharacterEncoding, Security, CORS, ...)
▼
DispatcherServlet ── front controller
▼
HandlerMapping ── temukan method @Controller
▼
HandlerInterceptor.preHandle
▼
Argument resolvers ── bind @RequestBody / @PathVariable / @RequestParam
▼
Controller method ── logika Anda → mengembalikan object atau ResponseEntity
▼
HandlerInterceptor.postHandle
▼
HttpMessageConverter / ViewResolver ── serialisasi ke JSON atau render view
▼
HandlerInterceptor.afterCompletion → Response ──▶ client
Filter. Filter (termasuk Spring Security) adalah lapisan terluar dan bisa memblokir atau membungkus request sebelum MVC melihatnya.preHandle — HandlerInterceptor berjalan sebelum controller (pemeriksaan auth, logging, timing); mengembalikan false menghentikan request.@PathVariable, @RequestParam, dan @RequestBody (via HttpMessageConverter) di-bind dan divalidasi.@RestController Anda menjalankan logika bisnis dan mengembalikan sebuah object atau ResponseEntity.postHandle, lalu nilai kembalian diserialisasi oleh sebuah HttpMessageConverter (JSON via Jackson) atau sebuah view di-render oleh sebuah ViewResolver.afterCompletion berjalan setelah response di-commit; @ExceptionHandler/@ControllerAdvice menangani exception sepanjang jalan.// 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 = memutus jalur
}
}
// 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. diserialisasi ke JSON
}
}
Lifecycle Spring punya dua lapisan ekstensi berbeda yang suka digali pewawancara: Filter (level servlet, terluar — tempat Spring Security tinggal) dan Interceptor (level Spring MVC, di sekitar controller). Mengetahui urutannya — filter, DispatcherServlet, mapping, interceptor preHandle, binding argument, controller, konversi message, afterCompletion — memberi tahu Anda di mana menempatkan autentikasi vs. logging, kenapa sebuah Security filter menolak sebuah request sebelum interceptor atau controller mana pun berjalan, dan bagaimana @ControllerAdvice memusatkan penanganan exception di seluruh alur.
Perpustakaan pertanyaan wawancara IT dengan jawaban mendetail — dari Junior hingga Senior.
Donasi