Study
Spring Boot

Validasi: @Valid & Bean Validation

Penjelasan

Bean Validation menambahkan annotation validasi langsung di properti DTO (@NotBlank, @Size, @Min, @Email, dst dari package jakarta.validation.constraints). Menambahkan @Valid di parameter @RequestBody Controller membuat Spring Boot OTOMATIS memvalidasi sebelum method dieksekusi — kalau gagal, otomatis merespons 400 dengan detail error.

Contoh Konsep

// dependency: spring-boot-starter-validation
public record CreateProdukRequest(
    @NotBlank(message = "Nama wajib diisi")
    @Size(min = 3, max = 100)
    String nama,

    @Min(value = 0, message = "Harga tidak boleh negatif")
    double harga
) {}

@PostMapping("/produk")
public ResponseEntity<CreateProdukRequest> store(@Valid @RequestBody CreateProdukRequest request) {
    // validasi otomatis jalan SEBELUM method ini dieksekusi
    return ResponseEntity.status(HttpStatus.CREATED).body(request);
}

Praktikum

Tambahkan annotation validasi ke CreateArtikelRequest: judul wajib string minimal 5 karakter (@NotBlank, @Size), isi wajib diisi (@NotBlank). Tambahkan @Valid di parameter method store().

Editor Latihan

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

Tips

Lupa menulis @Valid di depan @RequestBody membuat annotation validasi di DTO (@NotBlank, dst) DIABAIKAN SEPENUHNYA — data yang tidak valid tetap LOLOS ke dalam method, kesalahan yang sering tidak ketahuan sampai testing manual karena TIDAK ADA error saat compile.