如何对javax验证注释进行分组

时间:2017-07-26 11:31:15

标签: java validation constraints bean-validation

public class User {

    @NotBlank
    @Size(min=2)
    private final String firstName;

    @NotBlank
    @Size(min=2)
    private final String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

我想验证属性 firstName lastName 。 但我不想每次都重复注释。

如何创建自定义注释,因此代码将类似于

public class User {

    @UserName
    private final String firstName;

    @UserName
    private final String lastName;

    public User(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }
}

和验证将是相同的

2 个答案:

答案 0 :(得分:0)

首先让我先说一下注释是为了给编译器或运行时提供额外的信息。例如,当您使用注释@override时,它意味着告诉编译器此方法应该覆盖超类的方法。

现在,在您的情况下,您正在寻找适用于运行时的注释,因为您要验证该字段不为空等。

当然,你可以创建一个注释来检查你要查找的两个检查,但是你还需要实现这个机制以确保它们被验证(你将创建的注释接口应该具有运行时的保留策略 - {{ 1}})。当您使用@Retention(RetentionPolicy.RUNTIME)时,JRE确保此字段不是NULL但是当您想要创建自定义注释@NotNull并检查该字段不是NULL且最小大小是2时,那么在运行时您必须确保这个检查得到处理。

阅读this,了解如何在Java中读取注释的值。

正如@Nico在他的评论中所建议的,你可以搜索JSR是否有你正在寻找的这样的注释,如果没有,那么我认为你最好使用单独的注释。

答案 1 :(得分:0)