当前位置: 首页 > 知识库问答 >
问题:

如何分组javax验证注释

汤弘文
2023-03-14
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个答案

章锦
2023-03-14

第六章。创建自定义约束。约束合成

樊杰
2023-03-14

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

现在,在您的例子中,您正在寻找用于运行时的注释,因为您希望验证该字段是否为非空等等。

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

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

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

 类似资料: