【发布时间】:2022-01-08 02:33:49
【问题描述】:
你好,我有下一段代码:
@Setter
@Getter
@Builder
public class User {
@Pattern(regexp = "[a-zA-Z]*")
private String username;
public User(String username){
this.username = username;
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Set<ConstraintValidation<User>> violations = factory.getValidator().validate(this);
if(!violations.isEmpty) throw new ConstraintViolationExcetion(violations);
}
它正在工作,当我尝试创建用户时,它总是检查约束(也使用构建器模式),但我想避免生成构造函数并使用 lombok 注释 @AllArgsConstructor 并使用来自 javax 的 PostConstruct进行验证。
@Setter
@Getter
@AllArgsConstructor
@Builder
public class User {
@Pattern(regexp = "[a-zA-Z]*")
private String username;
@PostConstruct
public void valid() {
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Set<ConstraintValidation<User>> violations = factory.getValidator().validate(this);
if(!violations.isEmpty) throw new ConstraintViolationExcetion(violations);
}
我正在使用 JAVA11,包括 javax.annotation 依赖项。用户是一个普通的对象,而不是一个spring的bean。 但是这种方式行不通......我怎样才能让它工作?谢谢。
【问题讨论】:
-
User是 EJB / Spring bean 还是常规对象? -
它是一个普通对象
标签: java validation constraints lombok builder