Java Academy · पाठ

Bean सत्यापन: @NotNull, @Size, @Pattern

DTO पर Bean Validation सीमाएँ लगाइए और नियंत्रकों में @Valid से सत्यापन शुरू कीजिए

पाठ 1, कुल 4 में से13 चरण

Bean सत्यापन: @NotNull, @Size, @Pattern, CoddyKit पर Java Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Java Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

बीन सत्यापन क्या है?

बीन सत्यापन (Jakarta Bean Validation 3.0), Java बीन्स के लिए घोषणात्मक बाध्यता एनोटेशन उपलब्ध कराता है। Spring Boot एक सत्यापक को स्वतः कॉन्फ़िगर करता है और उसे @Valid या @Validated के माध्यम से सक्रिय करता है।

@NotNull, @NotEmpty, @NotBlank

@NotNull: मान null नहीं होना चाहिए। @NotEmpty: null नहीं और रिक्त नहीं होना चाहिए (स्ट्रिंग/कलेक्शन)। @NotBlank: null नहीं, रिक्त नहीं और केवल whitespace नहीं होना चाहिए। स्ट्रिंग के लिए @NotBlank को प्राथमिकता दें।

public record CreateUserRequest(
    @NotBlank(message = "Name is required")
    String name,
    @NotBlank @Email
    String email,
    @NotNull
    UserRole role
) {}

@Size और @Length

@Size(min, max) स्ट्रिंग, कलेक्शन, मैप और ऐरे के आकार को सीमित करता है। @Length (Hibernate) केवल स्ट्रिंग पर काम करता है। पोर्टेबिलिटी के लिए @Size को प्राथमिकता दें।

@Size(min = 3, max = 50, message = "Name must be 3-50 characters")
private String name;
@Size(min = 1, max = 10, message = "Cart must have 1-10 items")
private List<CartItem> items;

@Min, @Max, @Positive, @Range

संख्यात्मक बाध्यताएँ: सटीक सीमाओं के लिए @Min/@Max, चिह्न संबंधी बाध्यताओं के लिए @Positive/@PositiveOrZero, और BigDecimal के लिए @DecimalMin/@DecimalMax का उपयोग करें।

@Min(1) @Max(100)
private int quantity;
@DecimalMin("0.01") @DecimalMax("99999.99")
private BigDecimal price;
@Positive
private long orderId;

रेगुलर एक्सप्रेशन सत्यापन के लिए @Pattern

@Pattern(regexp) स्ट्रिंग का सत्यापन रेगुलर एक्सप्रेशन के अनुसार करता है। यह फ़ोन नंबर, पिन कोड और कस्टम प्रारूपों के लिए उपयोगी है।

@Pattern(regexp = "^\\+?[1-9]\\d{7,14}$", message = "Invalid phone number")
private String phone;
@Pattern(regexp = "^[A-Z]{2}\\d{5}$", message = "Invalid postal code (e.g. AB12345)")
private String postalCode;

@Email और @URL

@Email ईमेल प्रारूप (मूल RFC 5321) का सत्यापन करता है। @URL (Hibernate) URL प्रारूप का सत्यापन करता है। इन्हें हमेशा @NotBlank के साथ मिलाकर उपयोग करें, क्योंकि ये null मान की अनुमति देते हैं।

@NotBlank @Email
private String email;
// Hibernate-specific:
@URL(protocol = "https")
private String profileUrl;

@Past, @Future, @PastOrPresent

समय-संबंधी बाध्यताएँ दिनांक/समय मानों का सत्यापन करती हैं। यह LocalDate, LocalDateTime, Instant और अन्य प्रकारों के साथ काम करता है।

@Past(message = "Birth date must be in the past")
private LocalDate birthDate;
@Future(message = "Expiry must be in the future")
private LocalDate expiryDate;

@Valid से सत्यापन सक्रिय करना

नियंत्रक विधि के पैरामीटर में @Valid जोड़ें। Spring ऑब्जेक्ट का सत्यापन करता है और विफल होने पर MethodArgumentNotValidException उत्पन्न करता है, जिससे 400 Bad Request लौटता है।

@PostMapping("/users")
public ResponseEntity<UserDto> create(@Valid @RequestBody CreateUserRequest req) {
    User user = userService.create(req);
    return ResponseEntity.status(201).body(UserDto.from(user));
}

फ़ील्ड पर @Valid से क्रमिक सत्यापन

नेस्टेड ऑब्जेक्ट का सत्यापन करने के लिए, वर्ग-स्तरीय बाध्यताओं के अतिरिक्त फ़ील्ड पर @Valid लगाएँ।

public record OrderRequest(
    @NotNull @Valid
    AddressRequest shippingAddress, // validates AddressRequest constraints too
    @Valid @NotEmpty
    List<@Valid LineItemRequest> items
) {}

सत्यापन समूह

अलग-अलग संदर्भों में अलग-अलग बाध्यताएँ लागू करने के लिए समूहों का उपयोग करें (जैसे, Create और Update)। समूह इंटरफ़ेस के साथ एनोटेट करें और @Validated(CreateGroup.class) से सक्रिय करें।

public interface CreateGroup {}
public interface UpdateGroup {}
public record UserRequest(
    @NotBlank(groups = CreateGroup.class) String password,
    @NotNull(groups = UpdateGroup.class)  Long id
) {}
// Controller:
@PutMapping("/{id}")
public UserDto update(@Validated(UpdateGroup.class) @RequestBody UserRequest req) { ... }

सत्यापन त्रुटियाँ पढ़ना

फ़ील्ड त्रुटियाँ निकालने और संरचित त्रुटि प्रतिक्रियाएँ बनाने के लिए @ControllerAdvice में MethodArgumentNotValidException को पकड़ें।

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<Map<String, String>> handleValidation(MethodArgumentNotValidException ex) {
    Map<String, String> errors = new LinkedHashMap<>();
    ex.getBindingResult().getFieldErrors().forEach(e ->
        errors.put(e.getField(), e.getDefaultMessage()));
    return ResponseEntity.badRequest().body(errors);
}

त्वरित जाँच

कौन-सा एनोटेशन यह सत्यापित करता है कि String null और blank दोनों न हो (सिर्फ़ whitespace न हो)?

पुनरावलोकन

DTO पर Bean Validation की बाध्यताएँ लगाएँ। सत्यापन सक्रिय करने के लिए नियंत्रकों में @Valid जोड़ें। स्ट्रिंग के लिए @NotBlank, लंबाई के लिए @Size, रेगुलर एक्सप्रेशन के लिए @Pattern, और दिनांकों के लिए @Past/@Future का उपयोग करें। त्रुटियों को @ControllerAdvice में संभालें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Java सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
104
पाठ
374

अक्सर पूछे जाने वाले प्रश्न

क्या “Bean सत्यापन: @NotNull, @Size, @Pattern” पाठ निःशुल्क है?

हाँ—“Bean सत्यापन: @NotNull, @Size, @Pattern” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Java Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Java Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Bean सत्यापन: @NotNull, @Size, @Pattern” में मैं क्या सीखूँगा?

DTO पर Bean Validation सीमाएँ लगाइए और नियंत्रकों में @Valid से सत्यापन शुरू कीजिए आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Java Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Java Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Java Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“Bean सत्यापन: @NotNull, @Size, @Pattern” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Java Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Java Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Bean सत्यापन: @NotNull, @Size, @Pattern
  2. कस्टम Constraint एनोटेशन
  3. @ControllerAdvice से वैश्विक अपवाद प्रबंधन
  4. RFC 7807 Problem Details और सुसंगत त्रुटि प्रतिक्रियाएँ
← Java Academy पर वापस जाएँ