假设我使用一些验证注释定义了我的Entity
类:
public class Entity {
@Column(unique = true)
@NotNull
private String login;
@NotNull
private String password;
@Email
private String email;
}
我知道可以使用参数中的Entity
注释以及关联的错误对象验证新的@Valid
。
但是,我需要在另一个方法的中间创建一个新的Entity
,我需要验证构造的实体是否正确(它匹配在类的定义中使用注释声明的限制):
public whateverMethod(...) {
Entity e = new Entity(a, b, c, ...);
validate(e); // I need something like this
}
我在Spring文档中找不到这样的内容。
任何帮助?
答案 0 :(得分:1)
您可以使用Validator
注入LocalValidatorFactoryBean
对象,然后使用该验证程序验证您的实体。
Bean声明:
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />
您的服务:
@Service
public class fooService {
@Autowired
Validator validator
public whateverMethod(...) {
Entity e = new Entity(a, b, c, ...);
Set<ConstraintViolation<Entity>> = validator.validate(e);
}
}
如果您不想注入bean,可以执行以下操作:
public class fooClass {
public whateverMethod(...) {
Entity e = new Entity(a, b, c, ...);
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();
Set<ConstraintViolation<Entity>> = validator.validate(e);
}
}
请注意,JSR-303
提供程序(例如Hibernate Validator
)应该出现在类路径中,并会自动检测到。