ker*_*nic 3 java annotations bean-validation
使用JSR-303批注执行bean验证时,批注字段与getter之间有什么区别?
是否推荐一种方法而不是另一种方法?
现场注释
public class Person {
@NotBlank
private String firstName;
public String getFirstName() {
return firstName;
}
public String setFirstName(String firstName) {
this.firstName = firstName;
}
}
Run Code Online (Sandbox Code Playgroud)
吸气剂注释
public class Person {
private String firstName;
@NotBlank
public String getFirstName() {
return firstName;
}
public String setFirstName(String firstName) {
this.firstName = firstName;
}
}
Run Code Online (Sandbox Code Playgroud)
约束声明主要通过注释放置在类或接口上。约束注释(请参见第2.1节“约束注释”)可以在类型的任何字段或任何与JavaBeans兼容的属性上应用于类型。
在类上定义约束时,正在验证的类实例将传递到ConstraintValidator。在字段上定义约束时,该字段的值将传递到ConstraintValidator。在getter上定义约束时,getter调用的结果将传递到ConstraintValidator。
将约束放在(通常是公共)getter而不是(通常是私有)字段上的最大好处是,约束以这种方式成为类型的公共API的一部分。它们甚至将被添加到生成的JavaDoc中。类型的用户无需查看其内部实现即可知道对它应用哪些约束。
注释吸气剂的另一个优点是可以将约束放在基类或接口上的方法上,也可以应用于任何子类型/实现。