Study
Spring Boot

Filter & Interceptor Dasar

Penjelasan

Spring Boot punya dua level "middleware": Filter (bagian dari spesifikasi Servlet Java, berjalan SEBELUM masuk ke Spring MVC sama sekali, cocok untuk hal generik seperti logging/CORS) dan HandlerInterceptor (level Spring MVC, punya akses ke informasi handler yang akan dipanggil, cocok untuk otorisasi berbasis anotasi Controller).

Contoh Konsep

@Component
public class LoggingFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        System.out.println(req.getMethod() + " " + req.getRequestURI());
        chain.doFilter(request, response); // WAJIB, lanjut ke filter/handler berikutnya
    }
}

Praktikum

Buat @Component CekJamKerjaFilter implements Filter yang menolak akses (status 403) kalau jam sekarang (LocalTime.now().getHour()) di luar rentang 8-17, dan memanggil chain.doFilter() kalau masih dalam jam kerja.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Lupa memanggil chain.doFilter() membuat REQUEST MENGGANTUNG SELAMANYA, sama persis konsekuensinya dengan lupa next() di Express.js atau await next() di ASP.NET Core — pola "WAJIB memanggil fungsi lanjutan" ini universal di hampir semua sistem middleware/filter, bukan spesifik Spring Boot.