我有一个非常简单的使用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(); }
瞧!验证现已开始。