कस्टम वैलिडेटर
अपनी वैलिडेशन बाधाएँ लिखें।
कस्टम वैलिडेटर, CoddyKit पर Spring Boot 4 माइक्रोसर्विस और REST API का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Spring Boot 4 माइक्रोसर्विस और REST API सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Spring Boot 4 माइक्रोसर्विस और REST API पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
जब अंतर्निहित विकल्प पर्याप्त न हों
मानक बाध्यताएँ हर नियम को व्यक्त नहीं कर सकतीं — जैसे मान्य कूपन कोड का प्रारूप, किसी क्षेत्र के लिए उपयुक्त फ़ोन नंबर, या ऐसा मान जिसका डेटाबेस में मौजूद होना आवश्यक हो। इनके लिए आपको सत्यापक पर आधारित एक कस्टम बाध्यता लिखनी होती है।
कस्टम बाध्यता के दो भाग
कस्टम बाध्यता के दो हिस्से होते हैं:
- एक एनोटेशन, जिसे आप फ़ील्ड या पैरामीटर पर लगाते हैं
- एक ConstraintValidator, जिसमें वास्तविक जाँच का तर्क होता है
एनोटेशन निर्धारित करना
एनोटेशन बनाएँ और उसे @Constraint के माध्यम से उसके सत्यापक से जोड़ें। विनिर्देश के अनुसार आवश्यक मानक message, groups और payload सदस्य घोषित करें।
@Target({ FIELD, PARAMETER })
@Retention(RUNTIME)
@Constraint(validatedBy = StrongPasswordValidator.class)
public @interface StrongPassword {
String message() default "Password is not strong enough";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}ConstraintValidator लागू करना
सत्यापक ConstraintValidator<Annotation, Type> को लागू करता है और isValid को ओवरराइड करता है। जब मान नियम को पूरा करे, तब true लौटाएँ।
public class StrongPasswordValidator
implements ConstraintValidator<StrongPassword, String> {
@Override
public boolean isValid(String value, ConstraintValidatorContext ctx) {
if (value == null) return true; // let @NotNull handle null
return value.length() >= 8
&& value.chars().anyMatch(Character::isDigit)
&& value.chars().anyMatch(Character::isUpperCase);
}
}नल मान सँभालने की परंपरा
परंपरा के अनुसार कस्टम सत्यापक null को मान्य मानता है और नल की जाँच @NotNull पर छोड़ देता है। इससे बाध्यताएँ संयोज्य रहती हैं — हर नियम केवल एक काम करता है।
कस्टम बाध्यता का उपयोग करना
अपने एनोटेशन को अंतर्निहित एनोटेशन की तरह ही लागू करें। नियंत्रक पर @Valid के साथ मिलकर यह सामान्य सत्यापन प्रवाह में शामिल हो जाता है।
public class CreateUserRequest {
@NotBlank
@StrongPassword
private String password;
}कस्टम उल्लंघन संदेश
isValid के भीतर आप डिफ़ॉल्ट संदेश को निष्क्रिय करके संदर्भ के अनुसार संदेश जोड़ सकते हैं। यह तब उपयोगी होता है जब एक ही एनोटेशन कई उप-नियम लागू करता है।
ctx.disableDefaultConstraintViolation();
ctx.buildConstraintViolationWithTemplate(
"Password must include a digit and an uppercase letter")
.addConstraintViolation();
return false;सत्यापक में बीन्स इंजेक्ट करना
ConstraintValidator एक Spring bean है, इसलिए इसमें कंस्ट्रक्टर इंजेक्शन का उपयोग किया जा सकता है — इससे रिपॉज़िटरी या सेवा से जाँच करने वाले नियम संभव होते हैं, जैसे विशिष्टता की जाँच।
public class UniqueEmailValidator
implements ConstraintValidator<UniqueEmail, String> {
private final UserRepository repo;
public UniqueEmailValidator(UserRepository repo) { this.repo = repo; }
@Override
public boolean isValid(String email, ConstraintValidatorContext ctx) {
return email == null || !repo.existsByEmail(email);
}
}क्लास-स्तरीय बाध्यताएँ
कुछ नियम कई फ़ील्ड पर लागू होते हैं — "पासवर्ड, confirmPassword के बराबर होना चाहिए।" एनोटेशन का लक्ष्य TYPE रखें और कई फ़ील्ड को एक साथ पढ़कर पूरे ऑब्जेक्ट का सत्यापन करें।
@Target(TYPE)
@Retention(RUNTIME)
@Constraint(validatedBy = PasswordsMatchValidator.class)
public @interface PasswordsMatch {
String message() default "Passwords do not match";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}आरंभीकरण हुक
सत्यापन शुरू होने से पहले एनोटेशन इंस्टेंस की विशेषताओं को, जैसे कॉन्फ़िगर की जा सकने वाली न्यूनतम लंबाई को, सुरक्षित करने के लिए initialize को ओवरराइड करें।
@Override
public void initialize(StrongPassword ann) {
this.minLength = ann.minLength();
}सत्यापकों को शुद्ध और तेज़ रखें
सत्यापक हर अनुरोध पर चलते हैं, इसलिए जहाँ संभव हो उन्हें तेज़ और साइड-इफ़ेक्ट से मुक्त रखें। डेटाबेस-आधारित जाँचें ठीक हैं, लेकिन अनुरोध सँभालने की गति कम न हो, इसके लिए उन्हें अनुक्रमित और हल्का रखें।
त्वरित जाँच
कस्टम सत्यापकों की अपनी समझ जाँचें।
पुनरावलोकन
कस्टम सत्यापक Bean Validation का विस्तार करते हैं।
- एक बाध्यता में
@Constraintएनोटेशन और एकConstraintValidatorशामिल होते हैं isValidको ओवरराइड करें; परंपरा के अनुसारnullको मान्य मानें- सत्यापक बीन्स होते हैं, इसलिए वे कंस्ट्रक्टर इंजेक्शन का समर्थन करते हैं
- अनेक फ़ील्ड से जुड़े नियमों के लिए क्लास-स्तरीय बाध्यताओं का उपयोग करें
- सत्यापन संदर्भ के माध्यम से संदेशों को अनुकूलित करें
एआई शिक्षक के साथ Java सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 24
- पाठ
- 93
अक्सर पूछे जाने वाले प्रश्न
क्या “कस्टम वैलिडेटर” पाठ निःशुल्क है?
हाँ—“कस्टम वैलिडेटर” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Spring Boot 4 माइक्रोसर्विस और REST API पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Spring Boot 4 माइक्रोसर्विस और REST API पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“कस्टम वैलिडेटर” में मैं क्या सीखूँगा?
अपनी वैलिडेशन बाधाएँ लिखें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Spring Boot 4 माइक्रोसर्विस और REST API का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Spring Boot 4 माइक्रोसर्विस और REST API शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Spring Boot 4 माइक्रोसर्विस और REST API शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“कस्टम वैलिडेटर” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Spring Boot 4 माइक्रोसर्विस और REST API पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Spring Boot 4 माइक्रोसर्विस और REST API पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।