java - 什么时候使用验证?

标签 java spring hibernate validation annotations

我只是想为 User 类编写一个测试来检查验证。我想知道没有任何内容按照注释进行验证。

@Entity
public class User {

    @Id
    @NotBlank
    @Size(min = 2, max = 255)
    private String username;

    @NotBlank
    @Column(length = 60)
    private String password;

    public User(String username, String password) {
        this.username = username.trim();
        this.password = password;
    }
}

现在我正在尝试这个:

User user2 = new User("admin", "");
User user3 = new User("", "test");
User user4 = new User("", "");

我假设了一些异常(exception),但什么也没有。

  • 那么有没有办法测试这些注释?
  • 这些验证何时启动?

最佳答案

So is there a way to test these annotations?

是的,您需要 javax.validation.Validator执行验证的实例:

// obtain a validator
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
Validator validator = factory.getValidator();

// do a test
Set<ConstraintViolation<User>> constraintViolations = validator.validate(user2);
Assert.assertEquals(0, constraintViolations.size());

And when are those validations fired up?

他们可能会在不同层面上被激发。

例如,Spring 可以将 Controller 层上的验证(当请求到来时)与 @javax.validation.Valid 集成起来。 。或者,您可以在将数据发送到数据库之前放置一个 validator 来引发异常。

关于java - 什么时候使用验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49651651/

相关文章:

java - 使用spring hibernate,从只读数据源读取并写入读/写数据源

java - HTTPServletRequest getServerPort 返回 -1

java - 如何从java中的嵌套对象列表中获取最大对象

java - Scala/Lift 与 Java/Spring。为什么要打架?

java - 使用 Ant 将 slf4j 依赖项添加到 Spring 4.0 应用程序

java - 无法在 Play-Spring-Hibernate 应用程序中加载 ApplicationContext,获取 java.lang.ClassNotFoundException : org. w3c.dom.ElementTraversal

java - 如何防止 Spring MVC 3.0 应用程序中的 JSP 上出现原始异常信息?

YYYY-MM-DDThh 的 Java SimpleDateFormat :mm:ssTZD

Spring jar 下载

java - 在 Hibernate 中更新包含列表的对象