Init Binder
@InitBinder adalah fitur dalam Spring MVC yang berfungsi sebagai "pengolah data awal" sebelum input dari user dimasukkan ke dalam objek Java.
Berikut poin-poin utamanya:
- Pembersih Data (Sanitasi): Paling sering digunakan untuk memotong spasi kosong di awal/akhir input teks secara otomatis (trimming).
- Konverter Format: Mengatur bagaimana format tertentu (seperti format tanggal
dd-mm-yyyy) harus dibaca dan diubah menjadi objek Java. - Keamanan Data: Bisa membatasi field mana saja yang boleh diterima dari form (menggunakan
setAllowedFields) untuk mencegah peretasan data. - Waktu Eksekusi: Berjalan sebelum proses
@Validatau pengisian data ke model dimulai. - Cakupan: Jika ditaruh di dalam
Controller, hanya berlaku untukControlleritu. Jika di@ControllerAdvice, berlaku untuk seluruh aplikasi.
Analogi: @InitBinder seperti saringan yang memastikan air (data) yang masuk ke dalam wadah (objek) sudah bersih dan sesuai standar sebelum digunakan.
Contoh:
// menambahkan initbinder, method ini akan selalu dieksekusi sebelum controller dipanggil
// method ini akan convert trim input string dan menghapus setiap spasi / string kosong
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
StringTrimmerEditor trimmerEditor = new StringTrimmerEditor(true);
dataBinder.registerCustomEditor(String.class, trimmerEditor);
}