我正在验证我的数据访问对象类的字段。在一次尝试中,我开始为属性添加Bean Validation注释(@NotNull,@NotBlank,@Min,@Max等)。我还有更多的Jackson注释(@JsonProperty(..))用于swagger库和文档(@Api(...))。在我看来,这个类非常“肮脏”,有很多注释(每个属性至少有三个注释)。以下是一个字段的示例:
@JsonProperty("ownName")
@Api(description="it is my own name" required=true)
@Valid
@NotNull
private SomeObject object;
在另一次尝试中,我使用了Spring Validator
接口进行了自己的验证。如果使用类似于Spring接口这样的自定义验证器,似乎会更加清晰,并且允许您为不同情况生成多个验证器。此外,该类似乎没有过多的注释和验证与类无关。以下是Validator
的示例:
public class UserValidator implements Validator {
@Override
public boolean supports(Class<?> arg0) {
return User.class.isAssignableFrom(arg0);
}
@Override
public void validate(Object obj, Errors error) {
User user = (User) obj;
if(user.getPassword().length() < 10)
{
error.reject("Password must be lesser than 10");
}
//more validations....
}
}
- 什么情况下会使用其中一个而不是另一个?
- 每种方法的优缺点是什么?