JSR-303注释场vs吸气剂

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)

VPK*_*VPK 5

约束声明主要通过注释放置在类或接口上。约束注释(请参见第2.1节“约束注释”)可以在类型的任何字段或任何与JavaBeans兼容的属性上应用于类型。

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

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

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

  • 您与问题的链接已损坏 (2认同)