Validation Annotations (@NotNull, @Size) ব্যবহার করা

Jackson এবং Bean Validation Integration - জ্যাকসন (Jackson) - Java Technologies

282

Java Bean Validation অ্যানোটেশন যেমন @NotNull, @Size, এবং অন্যান্য হ্যান্ডল করতে Jackson এবং Bean Validation API (যেমন Hibernate Validator) একত্রে কাজ করে। এগুলো সাধারণত ডেটা ভ্যালিডেশন নিশ্চিত করার জন্য ব্যবহৃত হয়।


Java Bean Validation এর প্রধান উদ্দেশ্য

  • @NotNull: কোনো ফিল্ড null হতে পারবে না।
  • @Size: কোনো ফিল্ডের দৈর্ঘ্য বা সাইজ নির্দিষ্ট সীমার মধ্যে থাকতে হবে।
  • @Min, @Max: একটি ফিল্ডের সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ।
  • @Pattern: একটি ফিল্ড নির্দিষ্ট প্যাটার্ন অনুসরণ করছে কি না তা যাচাই।

Jackson এর মাধ্যমে Validation Integration

প্রয়োজনীয় ডিপেনডেন্সি

Maven Dependency:

<dependency>
    <groupId>javax.validation</groupId>
    <artifactId>validation-api</artifactId>
    <version>2.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>6.2.4.Final</version>
</dependency>

Step-by-Step উদাহরণ

১. মডেল ক্লাসে Validation Annotation যোগ করা

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class User {
    @NotNull(message = "Name cannot be null")
    private String name;

    @Size(min = 1, max = 50, message = "Name length must be between 1 and 50 characters")
    private String username;

    @NotNull(message = "Email cannot be null")
    private String email;

    // Getters and Setters
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

২. Validation চেক করার জন্য Validator ব্যবহার করা

import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.ConstraintViolation;
import java.util.Set;

public class ValidationExample {
    public static void main(String[] args) {
        // Validator তৈরি
        ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        Validator validator = factory.getValidator();

        // মডেল অবজেক্ট তৈরি
        User user = new User();
        user.setName(null); // Invalid
        user.setUsername(""); // Invalid
        user.setEmail(null); // Invalid

        // Validation চেক
        Set<ConstraintViolation<User>> violations = validator.validate(user);

        // Validation ত্রুটি প্রদর্শন
        for (ConstraintViolation<User> violation : violations) {
            System.out.println(violation.getPropertyPath() + ": " + violation.getMessage());
        }
    }
}

Output:

name: Name cannot be null
username: Name length must be between 1 and 50 characters
email: Email cannot be null

৩. Spring Boot এর সাথে Validation ব্যবহার করা

Spring Boot এর ক্ষেত্রে Validation সহজে REST API তে ব্যবহার করা যায়।

Spring Boot মডেল ক্লাস:

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class User {
    @NotNull(message = "Name cannot be null")
    private String name;

    @Size(min = 1, max = 50, message = "Username length must be between 1 and 50 characters")
    private String username;

    @NotNull(message = "Email cannot be null")
    private String email;

    // Getters and Setters
}

Spring REST Controller:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

@RestController
@RequestMapping("/api/users")
public class UserController {

    @PostMapping
    public ResponseEntity<String> createUser(@Valid @RequestBody User user) {
        return new ResponseEntity<>("User is valid!", HttpStatus.OK);
    }
}

API Call উদাহরণ:

Request:

{
  "name": null,
  "username": "",
  "email": null
}

Response:

{
  "timestamp": "2024-12-21T10:30:00.000+00:00",
  "status": 400,
  "errors": [
    "Name cannot be null",
    "Username length must be between 1 and 50 characters",
    "Email cannot be null"
  ]
}

৪. Validation Error হ্যান্ডল করা

Spring Boot এ কাস্টম Error Response তৈরি করতে একটি ExceptionHandler ব্যবহার করা হয়।

Custom Exception Handler:

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;
import java.util.Map;

@RestControllerAdvice
public class ValidationExceptionHandler {

    @ExceptionHandler(MethodArgumentNotValidException.class)
    public ResponseEntity<Map<String, String>> handleValidationExceptions(MethodArgumentNotValidException ex) {
        Map<String, String> errors = new HashMap<>();
        for (FieldError error : ex.getBindingResult().getFieldErrors()) {
            errors.put(error.getField(), error.getDefaultMessage());
        }
        return new ResponseEntity<>(errors, HttpStatus.BAD_REQUEST);
    }
}

Response:

{
  "name": "Name cannot be null",
  "username": "Username length must be between 1 and 50 characters",
  "email": "Email cannot be null"
}

  • @NotNull এবং @Size এর মতো Validation অ্যানোটেশন ব্যবহার করে ডেটার মান যাচাই করা সহজ হয়।
  • Jackson এবং Bean Validation এর ইন্টিগ্রেশন JSON ডেটা ভ্যালিডেশন নিশ্চিত করে।
  • Spring Boot এ @Valid এবং Exception Handler ব্যবহার করে REST API তে Validation সহজে প্রয়োগ করা যায়।
Content added By
Promotion

Are you sure to start over?

Loading...