gpt4 book ai didi

mongodb - 如何让 Spring-Data-MongoDB 验证我的对象?

转载 作者:IT老高 更新时间:2023-10-28 13:07:29 26 4
gpt4 key购买 nike

我有一个使用 Spring-Data-Mongodb 的非常简单的 Spring Boot 应用程序

我要做的就是设置一个 JSR-303 验证规则,说明我要保存的对象必须有一个用户名。我读到 JSR-303 在 1.1 版中被添加到 spring-data-mongodb 中,所以我假设当我保存一个对象时它已经过验证,但事实并非如此。

有没有人有一个简单的示例设置来说明它是如何工作的?

我的用户 pojo 看起来像

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);
}
}

我在某处看到只有在上下文中创建了验证器时才会启动验证,所以我尝试更新我的 Application 类(它包含所有配置,看起来像

@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 验证器,例如:

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

如果你使用 Java 配置,方法是创建 2 个 bean:

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

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

瞧!验证正在进行中。

关于mongodb - 如何让 Spring-Data-MongoDB 验证我的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22568962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com