mongodb - स्प्रिंग-डेटा-मोंगो डीबी को मेरे ऑब्जेक्ट मान्य करने के लिए कैसे पाएं?




bean-validation spring-data-mongodb (2)

संदर्भ में एक Validator जोड़ना एक अच्छा पहला कदम है, लेकिन मुझे नहीं लगता कि यह आपके साथ कुछ भी तब तक बातचीत करेगा जब तक कि आप इसे नहीं मांगते। स्प्रिंग डाटा लोग संभवत: निश्चित रूप से कह सकते हैं लेकिन मुझे लगता है कि आपको स्पष्ट रूप से कुछ श्रोताओं को भी घोषित करना होगा। इस सुविधा पर एक पुराना ब्लॉग है , लेकिन आप इसे आसानी से आसानी से कर सकते हैं।

यदि आपको लगता है कि स्प्रिंग बूट में एक उपयोगी ऑटोकोनफ़िग सुविधा होगी, तो गिटूब पर विस्तृत प्रस्ताव बनाने के लिए स्वतंत्र महसूस करें।

मेरे पास एक बहुत ही सरल स्प्रिंग बूट अनुप्रयोग है जो स्प्रिंग-डेटा-मोंगोडब का उपयोग करता है

मैं जो कुछ करना चाहता हूं, वह JSR-303 सत्यापन नियम सेट करता है, जो कहता है कि जिस ऑब्जेक्ट को मैं बचा रहा हूं उसका उपयोगकर्ता नाम होना चाहिए। मैंने पढ़ा है कि JSR-303 वसंत-डेटा-मोंगोडब को संस्करण 1.1 में जोड़ा गया था। इसलिए मैंने मान लिया था कि जब मैं किसी ऑब्जेक्ट को सहेजता हूं तो यह मान्य है, लेकिन ऐसा नहीं है।

क्या किसी के पास एक सरल उदाहरण सेटअप है जो दिखाता है कि यह कैसे काम करता है?

मेरा उपयोगकर्ता कजो ऐसा दिखता है

public class User {

    @Id
    private String id;

    @NotNull(message = "User Name is compulsory")
    private String userName;
    private String password;

    public User() {}

    public String getId() {
      return id;
    }
    public void setId(String id) {
      this.id = id;
    }

    public String getUserName() {
      return userName;
    }
    public void setUserName(String userName) {
      this.userName = userName;
    }


    public String getPassword() {
      return password;
    }
    public void setPassword(String password) {
      this.password = PasswordAuthService.hash(password);
    }
}

मैंने कहीं देखा है कि सत्यापन में केवल किक करता है यदि आपके पास संदर्भ में एक वैद्येटर बनाया गया है तो मैंने अपने आवेदन वर्ग को अद्यतन करने की कोशिश की (जिसमें सभी विन्यास शामिल हैं, जैसे

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

    @Bean
    public Validator getValidator() {
      LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
      return validator;
    }

    public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
    }

}

पहले सुनिश्चित करें कि आपके पास क्लासपाथ पर JSR-303 validator है, उदाहरण के लिए:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.2.0.Final</version>
</dependency>

यदि आप जावा कॉन्फिग का उपयोग करते हैं, तो जाने के लिए रास्ता 2 बीन्स बनाना है:

@Bean
public ValidatingMongoEventListener validatingMongoEventListener() {
    return new ValidatingMongoEventListener(validator());
}

@Bean
public LocalValidatorFactoryBean validator() {
    return new LocalValidatorFactoryBean();
}

देखा! मान्यकरण अब काम कर रहा है





spring-boot