bean校验中的约束是通过Java注解的形式表现出来的(例如,@NotNull是一个非空约束),再细分的话,有4种类型的约束,它们分别是:field级别的约束、property级别的约束、容器元素的约束和类级别的约束。
本文讲解第一种情况,也就是field级别的约束
- field级别的约束的例子
public class Car {
@NotNull
private String manufacturer;
@AssertTrue
private boolean isRegistered;
public Car(String manufacturer, boolean isRegistered) {
this.manufacturer = manufacturer;
this.isRegistered = isRegistered;
}
public String getManufacturer() {
return manufacturer;
}
public void setManufacturer(String manufacturer) {
this.manufacturer = manufacturer;
}
public boolean isRegistered() {
return isRegistered;
}
public void setRegistered(boolean registered) {
isRegistered = registered;
}
}
当使用field级别的约束的时候,hibernate validator会使用field访问策略来访问需要校验的值,这意味着,校验引擎直接访问实例变量而不是通过调用属性访问方法(getter方法),即使属性访问方法存在也不行。
任何访问级别的field都可以使用约束(public private等),但是static的不行。