编程语言
首页 > 编程语言> > Java-JSR-303注释字段与Getter

Java-JSR-303注释字段与Getter

作者:互联网

使用JSR-303批注执行bean验证时,批注字段与getter之间有什么区别?

是否推荐一种方法而不是另一种方法?

现场注释

public class Person {

  @NotBlank
  private String firstName;

  public String getFirstName() {
    return firstName;
  }

  public String setFirstName(String firstName) {
    this.firstName = firstName;
  }
}

吸气剂注释

public class Person {

  private String firstName;

  @NotBlank
  public String getFirstName() {
    return firstName;
  }

  public String setFirstName(String firstName) {
    this.firstName = firstName;
  }
}

解决方法:

约束声明主要通过注释放置在类或接口上.约束注释(see Section 2.1, “Constraint annotation”)可以应用于类型,任何类型的字段或任何与JavaBeans兼容的属性.

在类上定义约束时,正在验证的类实例将传递到ConstraintValidator.在字段上定义约束时,该字段的值将传递到ConstraintValidator.在getter上定义约束时,getter调用的结果将传递到ConstraintValidator.

将约束放在(通常是公共)getter而不是(通常是私有)字段上的最大好处是,约束以这种方式成为类型的公共API的一部分.它们甚至将被添加到生成的JavaDoc中.类型的用户无需查看其内部实现即可知道对它应用哪些约束.

注释获取方法的另一个优点是,可以将约束放在基类或接口上的方法上,也可以应用于任何子类型/实现.

标签:annotations,bean-validation,java
来源: https://codeday.me/bug/20191025/1928650.html